systemd یک سیستم init است که در برخی از لینوکسها برای کنترل و مدیریت فضای کاری کاربر و همچنین مدیریت سرویسها و پردازشها مورد استفاده قرار میگیرد.
حال کاربران لینوکسی برای استفاده از systemD در خط فرمان از systemctl استفاده کرده که در این مطلب به آموزش کار با systemctl می پردازیم.
systemctl همانند سایر دستورات لینوکسی دارای پارامترهای گوناگونی است که در ادامه به نوع ساختار وارد کردن دستور systemctl و توضیح انواع پارامترهای آن میپردازیم.
ساختار دستور systemctl
systemctl [Parameter] application.suffix
در بخش parameter ، شما نوع فعاللیت یک سرویس را مشخص میکنید مانند start یا stop
در بخش application ، نام ابزار ، اپلیکیشن و یا سرویس مورد نظر را وارد مینمایید. مانند Apache یا mysql
اگر شما یک کاربر غیر ریشه هستید لطفا روت شوید و یا قبل از دستور sudo بگذارید تا دستور با دسترسی ریشه اجرا شود در غیر این صورت ممکن که دستور شما عمل نکند.
و در انتها در بخش suffix ، یونیت مورد نظر جهت کنترل را وارد میکنید مانند Service یا socket
استارت سرویس با systemctl
برای استارت یک سرویس در لینوکس از پارامتر start استفاده میشود.
ساختار دستور
systemctl start application.service
همانطور که ملاحظه میکنید پس از دستور systemctl ، پارامتر start نوشته شده و در انتها نام سرویس نوشته میشود
نکته : برای استارت کردن و یا عملیات دیگر بر روی سرویس نیازی به وارد کردن اجباری کلمه service در انتهای نام سرویس مورد نظر نیست و همانطور که در مثال بالا ملاحظه مینمایید ، هر دو دستور به استارت کردن سرویس nginx میپردازند. اما در این آموزش ما تمامی مثالها را به دو شکل مختلف ذکر کردهایم.
- لازم به ذکر است که اگر شما نام سرویسی را که میخواهید استفاده کنید را نمیدانید، میتوانید با نوشتن فقط یکی دو حرف اول آن سرویس و سپس زدن دو بار پشت سر هم کلید TAB نام آن را کامل کنید.
- اگر شما یک کاربر غیر ریشه هستید لطفا روت شوید و یا قبل از دستور sudo بگذارید تا دستور با دسترسی ریشه اجرا شود در غیر این صورت ممکن که دستور شما عمل نکند.
استاپ سرویس با Systemctl
برای استاپ کردن سرویس یک سرویس از پارامتر stop استفاده میشود.
ساختار دستور
systemctl stop application.service
مثال استاپ کردن سرویس با systemctl
راه اندازی مجدد سرویس با systemctl
برای راه اندازی کامل مجدد یک سرویس از پارامتر restart استفاده میشود.
ساختار دستور
systemctl restart application.service
مثال ریستارت کردن سرویس با systemctl
ریلود سرویس با systemctl
ریلود کردن سرویس با پارامتر reload انجام میگیرد.
ساختار دستور
systemctl reload application.service
مثال ریلود کردن سرویس با systemctl
نکته : تفاوت reload و Restart در این است که restart به کل سرویس را استاپ کرده و مجدد استارت میکند ، اما reload تنها فایل configuration یا همان پیکربندی را فراخوانی کرده و سرویس به فعالیت خود ادامه میدهد. در مجموع ریلود سریعتر از ریستارت انجام خواهد پذیرفت. اگر نمیدانید در هنگام بارگذاری مجدد یک سرویس از reload و یا restart باید استفاده کرد ، میتوانید از پارامتر
reload-or-restart استفاده نمایید.
مثال reload-or-restart
systemctl reload-or-restart nginx.service
فعال سازی سرویس در استارت آپ با systemctl
برای فعال سازی یک سرویس در استارت آپ و راه اندازی خودکار یک سرویس پس از هر بار ریبوت باید از پارامتر enable استفاده نمایید.
ساختار دستور
systemctl enable application.service
مثال دستور فعال سازی یک سرویس در systemctl
با وارد کردن دستور بالا یک دستور shortcut در شاخه systemd ایجاد شده و پس از هر بار ریبوت systemd تمام shortcut های موجود در شاخهsystemd را استارت خواهد کرد.
غیر فعال سازی سرویس در استارت آپ با systemctl
برعکس دستور enable برای غیرفعال سازی یک سرویس برای استارت نشدن پس از ریبوت از پارامتر disable استفاده خواهد شد.
ساختار دستور
systemctl disable application.service
مثال غیرفعال سازی سرویس پس ریبوت با systemctl
دریافت وضعیت یک سرویس با systemctl
برای دریافت وضعیت یک سرویس از پارامتر status میتوان استفاده کرد.
ساختار دستور
systemctl status application.service
مثال دریافت وضعیت یک سرویس با systemctl
چک کردن وضعیت استارت بودن سرویس
برای چک کردن وضعیت حال حاضر سرویس در حالت استارت یا استاپ بودن آن از پارامتر is-active استفاده میشود.
ساختار دستور
systemctl is-active application.service
مثال چک کردن وضعیت سرویس با systemctl
چک کردن وضعیت فعال و یا غیرفعال بودن سرویس
برای چک کردن وضعیت enable و یا disable بودن سرویس که مربوط به استارت خودکار سرویس پس از ریبوت خواهد شد از پارامتر
is-enable استفاده میشود.
ساختار دستور
systemctl is-enable application.service
مثال چک کردن وضعیت فعالیت یک سرویس با systemctl
نمایش لیست تمام سرویسهای اکتیو systemD
برای دیدن لیستی از تمام سرویسهای در حال اجرا از پارامتر list-units استفاده میشود که به شکل زیر باید وارد شود.
systemctl list-units
حال اگر در نظر دارید لیست کاملتر از تمام سرویسها به همراه جزئیات بیشتری را دریافت کنید میتوان از دستور زیر استفاده کرد.
systemctl list-units --all
اگر قصد نمایش لیستی از تمام یونیتهای اکتیو نشده دارید از دستور زیر استفاده نمایید.
systemctl list-units --all --state=inactive
نوشته شده توسط : شیوا اسمعیل پور 941831205
http://linuxihaa.ir/systemctl/