در این مقاله از سری مقالات آموزش دستورات لینوکس با آموزش کار با دستور 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 استفاده لازم را برده باشید.
کاربر گرامی شما میتوانید سؤالات مربوط به این آموزش را در بخش کامنتها عنوان کرده و در همین قسمت پاسخ خود را دریافت کنید.