در این آموزش نحوه راه اندازی سرویس در بوت در Ubuntu 20.04 Focal Fossa را خواهید آموخت. اوبونتو از مدیر سرویس systemd برای مدیریت سرویسها استفاده میکند، همین موضوع باعث شده که فعال کردن و غیرفعال کردن سرویسها در ابونتو کار سادهای باشد.
فهرست همه سرویسهای موجود در اوبونتو 20.04
برای فهرست کردن همه فایلهای مربوط به سرویسهای موجود در اوبونتو ۲۰.۰۴، میتوانید از دستور زیر در ترمینال خود استفاده کنید:
$ sudo systemctl list-units --all --type=service --no-pager
پیدا کردن یک سرویس خاص در بین سرویسهای موجود
در صورتی که به دنبال یک سرویس واحد خاص هستید از دستور grep استفاده کنید. برای مثال دستور زیر فایل با نام apache2 را جستجو می کند و در نتیجه به شما نشان میدهد که آیا چنین فایلی وجود دارد یا خیر. در صورتی که چنین فایلی وجود داشته باشد؛ به معنای آن است که سرویسی با این نام بر روی لینوکس اوبونتو شما وجود دارد و نصب شده است:
$ sudo systemctl list-unit-files --no-pager | grep apache2
تهیه فهرست از سرویسها بر اساس وضعیت اجرایی
کافی است تا در دستور بالا به جای نام سرویس مورد نظر خود، هر عبارت دیگری را جایگزین کنید تا نتایج دستور بر اساس وجود کلمه مورد نظر شما فیلتر شود. به طور مثال میتوانید با زدن دستور زیر در ترمینال اوبونتو لیست همه سرویسهایی که در حال حاضر در حالت اجرا (running) هستند را ببینید:
$ sudo systemctl list-units --all --type=service --no-pager | grep running
برای نمایش تمام سرویسهایی که خارج از اجرا هستند از دستور زیر استفاده کنید:
$ sudo systemctl list-units --all --type=service --no-pager | grep exited
علاوه بر این برای نمایش تمام سرویسهایی که متوقف شده یا در فرآیند اجرا با مشکل مواجه شدهاند نیز میتوانید از دستور زیر استفاده کنید:
$ sudo systemctl list-units --all --type=service --no-pager | grep dead
توقف، اجرا و ریستارت یک سرویس مورد نظر
برای اجرا یا توقف یک سرویس با حتی ریستارت کردن آن میتوانید هم از دستور systemctl استفاده کنید و هم از دستور service که در اینجا ابتدا دستورات با استفاده از systemctl را میآوریم.
برای راهاندازی یا استارت یک سرویس میتوانید نام سرویس مورد نظر خود را در دستور زیر جایگزین apache2 کنید:
$ sudo systemctl start apache2
و برای توقف اجرای سرویس نیز میتوانید از دستور زیر استفاده کنید:
$ sudo systemctl stop apache2
همچنین اگر کارایی یک سرویس دچار اشکال شده یا تنظیمات آن را تغییر دادهاید، میتوانید با استفاده از دستور زیر آن را ریستارت کنید تا از متوقف و از نو راهاندازی شود؛ با این کار ممکن است اشکال آن سرویس بر طرف شود و در صورتی که تنظیمات آن را تغییر داده باشید؛ با تنظیمات جدید راه اندازی شود:
$ sudo systemctl restart apache2
برای تشخیص وضعیت فعلی یک سرویس نیز از دستور زیر استفاده کنید:
$ sudo systemctl status apache2
همهٔ این سه اقدام را میتوانید از طریق دستور service نیز انجام دهید. برای راه اندازی یک سرویس از طریق دستور service میتوانید از دستور زیر استفاده کنید:
$ sudo service apache2 start
و برای توقف اجرای یک سرویس نیز میتوانید که از دستور زیر استفاده کنید:
$ sudo service apache2 stop
همچنین برای راهاندازی مجدد یا تشخیص وضعیت اجرای یک سرویس نیز میتوانید از دستورهای زیر استفاده کنید:
$ sudo service apache2 restart
$ sudo service apache2 status
مدیریت راهاندازی سرویسها در هنگام شروع (boot) لینوکس
بعضی از سرویسها لازم است تا بلافاصله بعد از راهاندازی سیستمعامل اجرا شوند. به طور مثال وظیفهٔ اتصال به شبکه و اینترنت را سرویس network-manager به عهده دارد و به همین خاطر لازم است تا این سرویس همزمان با بوت شدن لینوکس اجرا شود.
برای اینکه چنین سرویسهایی همزمان با بوت لینوکس اجرا شوند لازم است تا STATE آنها بصورت enabled تنظیم شود و اگر قصد دارید اجرای یک سرویس بصورت اتوماتیک و همزمان با بوت شدن لینوکس را متوقف کنید باید STATE آن را بصورت disabled تنظیم کنید.
برای فعالسازی اجرای همزمان یک سرویس با بوت لینوکس از دستور زیر استفاده کنید:
$ sudo systemctl enable apache2
و برای جلوگیری از اجرای خودکار یک سرویس همزمان با بوت شدن سیستمعامل نیز میتوانید از دستور زیر استفاده کنید:
$ sudo systemctl disable apache2
با استفاده از دستورهای زیر نیز میتوانید تمام سرویسهایی که enabled یا disabled هستند را در یک لیست ببینید:
$ systemctl list-unit-files | grep enabled
$ systemctl list-unit-files | grep disabled

مدیریت سرویسهای اوبونتو با مراجعه به دایرکتوری /etc/init.d/
اگر از دستور systemctl استفاده کنید میبینید که تعداد زیادی سرویس در فهرست سرویسهای این دستور موجود است و برخی از سرویسها هم تحت چند نام که شاید برای من و شما مشابه باشد به نمایش در میآیند.
یکی دیگر از راههای مدیریت سرویسها درون لینوکس اوبونتو این است که با مراجعه به دایرکتوری /etc/init.d/ به سرویسها دسترسی داشته باشید و برای مدیریت هر سرویس فایل مربوط به آن را اجرا و پارامتر مد نظر خود را نیز وارد کنید:
به این ترتیب با اجرای دستور ls بر روی دایرکتوری /etc/init.d/ میتوانید فهرستی از سرویسهای موجود را ببینید اما دیگر خبری از جزئیات دیگر نیست و نمیتوانید متوجه شوید که کدام سرویس در چه وضعیتی به سر میبرد:
$ sudo ls /etc/init.d/
حال اگر فایل هر سرویس را اجرا و پارامتر مناسب را بعد از اجرای فایل بدهید؛ تغییر مد نظر شما در مورد سرویس مورد نظر اتفاق خواهد افتاد:
$ sudo /etc/init.d/apache2 {start|stop|restart|reload|force-reload|status}