آموزش

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

در این انواع روش‌ها و دستورات لازم برای مدیریت سرویس‌های داخل لینوکس اوبونتو را بصورت چیت‌شیت آورده‌ایم و عملکرد آن‌ها را نیز توضیح داده‌ایم

علیرضا پورعابدین۵ دقیقه مطالعه

در این آموزش نحوه راه اندازی سرویس در بوت در 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
تهیه فهرستی از سرویس‌های موجود در اوبونتو

مدیریت سرویس‌های اوبونتو با مراجعه به دایرکتوری /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}

منابع:

دیدگاه خود را بنویسید