کار با دستور systemctl

| دسته بندی: آموزش سرور مجازی لینوکس |
کار با دستور systemctl

در این مقاله از سری مقالات آموزش دستورات لینوکس با آموزش کار با دستور systemctl در خدمت شما خواهیم بود.

systemd یک سیستم init است که در برخی از لینوکس‌ها برای کنترل و مدیریت فضای کاری کاربر و همچنین مدیریت سرویس‌ها و پردازش‌ها مورد استفاده قرار می‌گیرد.

از سال 2015 بسیاری از توزیع‌های مطرح لینوکس مانند دبیان ، centos و غیره SystemD را به عنوان سیستم init خود قرار دادند.

حال کاربران لینوکسی برای استفاده از systemD در خط فرمان از دستور systemctl استفاده کرده که در این مطلب به آموزش کار با systemctl پرداخته شده است.

با ما همراه باشید.

دستور Systemctl یکی از پرکاربردترین دستورات در کنترل و مدیریت سرور لینوکس است.

کار با دستور systemctl

systemctl همانند سایر دستورات لینوکسی دارای پارامترهای گوناگونی است که در ادامه به نوع ساختار وارد کردن دستور systemctl و توضیح انواع پارامترهای آن می‌پردازیم.

ساختار دستور systemctl

systemctl [Parameter] application.suffix

همانطور که ملاحظه می‌کنید دستور systemctl ، دستور بسیار ساده‌ای است و برای استفاده از آن نیاز به تایپ و وارد کردن پارامترها و عبارات خاصی نمی‌باشد.

در بخش parameter ، شما نوع فعاللیت یک سرویس را مشخص می‌کنید مانند start یا stop

در بخش application ، نام ابزار ، اپلیکیشن و یا سرویس مورد نظر را وارد می‌نمایید. مانند Apache یا mysql

و در انتها در بخش suffix ، یونیت مورد نظر جهت کنترل را وارد می‌کنید مانند Service یا socket

نکته قابل توجه که باید بدانید این است که دستور systemctl قابلیت‌های دیگری مانند کنترل socket ، device و ... را به غیر از service خواهد داشت که در این مقاله تنها به کار با سرویس‌ها پرداخته شده است.

حال در ادامه به نحوه کار با دستور Systemctl می پردازیم.

استارت سرویس با systemctl

برای استارت یک سرویس در لینوکس از پارامتر start استفاده می‌شود.

ساختار دستور

systemctl start application.service

همانطور که ملاحظه می‌کنید پس از دستور systemctl ، پارامتر start نوشته شده و در انتها نام سرویس نوشته می‌شود.

مثال استارت سرویس با systemctl

systemctl start apache2.service
systemctl start apache2

نکته : برای استارت کردن و یا عملیات دیگر بر روی سرویس نیازی به وارد کردن اجباری کلمه service در انتهای نام سرویس مورد نظر نیست و همانطور که در مثال بالا ملاحظه می‌نمایید ، هر دو دستور به استارت کردن سرویس apache2 می‌پردازند. اما در این آموزش ما تمامی مثال‌ها را به دو شکل مختلف ذکر کرده‌ایم.

استاپ سرویس با Systemctl

برای استاپ کردن سرویس یک سرویس از پارامتر stop استفاده می‌شود.

ساختار دستور

systemctl stop application.service

مثال استاپ کردن سرویس با systemctl

systemctl stop apache2.service
systemctl stop apache

راه اندازی مجدد سرویس با systemctl

برای راه اندازی کامل مجدد یک سرویس از پارامتر restart استفاده می‌شود.

ساختار دستور

systemctl restart application.service

مثال ریستارت کردن سرویس با systemctl

systemctl restart apache2.service
systemctl restart apache2

ریلود سرویس با systemctl

ریلود کردن سرویس با پارامتر reload انجام می‌گیرد.

ساختار دستور

systemctl reload application.service

مثال ریلود کردن سرویس با systemctl

systemctl reload apache.service
systemctl reload apache

نکته : تفاوت reload و Restart در این است که restart به کل سرویس را استاپ کرده و مجدد استارت می‌کند ، اما reload تنها فایل configuration یا همان پیکربندی را فراخوانی کرده و سرویس به فعالیت خود ادامه می‌دهد. در مجموع ریلود سریعتر از ریستارت انجام خواهد پذیرفت. اگر نمی‌دانید در هنگام بارگذاری مجدد یک سرویس از reload و یا restart باید استفاده کرد ، می‌توانید از پارامتر reload-or-restart استفاده نمایید.

مثال reload-or-restart

systemctl reload-or-restart apache2.service

فعال سازی سرویس در استارت آپ با systemctl

برای فعال سازی یک سرویس در استارت آپ و راه اندازی خودکار یک سرویس پس از هر بار ریبوت باید از پارامتر enable استفاده نمایید.

ساختار دستور

systemctl enable application.service

مثال دستور فعال سازی یک سرویس در systemctl

systemctl enable apache2.service
systemctl enable apache2

با وارد کردن دستور بالا یک دستور shortcut در شاخه systemd ایجاد شده و پس از هر بار ریبوت systemd تمام shortcut های موجود در شاخه systemd را استارت خواهد کرد.

غیر فعال سازی سرویس در استارت آپ با systemctl

برعکس دستور enable برای غیرفعال سازی یک سرویس برای استارت نشدن پس از ریبوت از پارامتر disable استفاده خواهد شد.

ساختار دستور

systemctl disable application.service

مثال غیرفعال سازی سرویس‌ پس ریبوت با systemctl

systemctl disable apache2.service
systemctl disable apache2

دریافت وضعیت یک سرویس با systemctl

برای دریافت وضعیت یک سرویس از پارامتر status می‌توان استفاده کرد.

ساختار دستور

systemctl status application.service

مثال دریافت وضعیت یک سرویس با systemctl

systemctl status apache2.service
systemctl status apache

چک کردن وضعیت استارت بودن سرویس

برای چک کردن وضعیت حال حاضر سرویس در حالت استارت یا استاپ بودن آن از پارامتر is-active استفاده می‌شود.

ساختار دستور

systemctl is-active application.service

مثال چک کردن وضعیت سرویس با systemctl

systemctl is-active apache2.service
systemstl is-active apache2

چک کردن وضعیت فعال و یا غیرفعال بودن سرویس

برای چک کردن وضعیت enable و یا disable بودن سرویس که مربوط به استارت خودکار سرویس پس از ریبوت خواهد شد از پارامتر is-enable استفاده می‌شود.

ساختار دستور

systemctl is-enable application.service

مثال چک کردن وضعیت فعالیت یک سرویس با systemctl

systemctl is-enable apache2.service
systemctl is-enable apache2

نمایش لیست تمام سرویس‌های اکتیو systemD

برای دیدن لیستی از تمام سرویس‌های در حال اجرا از پارامتر list-units استفاده می‌شود که به شکل زیر باید وارد شود.

systemctl list-units

حال اگر در نظر دارید لیست کاملتر از تمام سرویس‌ها به همراه جزئیات بیشتری را دریافت کنید می‌توان از دستور زیر استفاده کرد.

systemctl list-units --all

اگر قصد نمایش لیستی از تمام یونیت‌های اکتیو نشده دارید از دستور زیر استفاده نمایید.

systemctl list-units --all --state=inactive

در این جا پارامترهای اصلی در دستور systemctl که به کنترل سرویس‌ها و systemD می‌پردازد ، به پایان رسیده است. در مطالب بعدی به توضیح بیشتر از دستور systemctl و نحوه کاربرد آن برای یونیت‌ها را بررسی خواهیم کرد.

امیدواریم از آموزش کار با دستور systemctl استفاده لازم را برده باشید.

کاربر گرامی شما می‌توانید سؤالات مربوط به این آموزش را در بخش کامنت‌ها عنوان کرده و در همین قسمت پاسخ خود را دریافت کنید.