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

 

 

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

 

اگر از لینوکس به عنوان سیستم عامل اصلی خود استفاده می‌کنید، با سرویس‌های مختلفی مانند وب سرور، ssh یا cron سرو کار خواهید داشت. دانستن نحوه لیست کردن سرویس‌های در حال اجرا یا بررسی وضعیت سرویس به خصوص برای اشکال زدایی مشکلات سیستم حائز اهمیت است.

بیشتر توزیع‌های اخیر لینوکس، از systemd به عنوان سیستم پیش فرض و مدیر سرویس استفاده می‌کنند.

Systemd، مجموعه‌ای از ابزارها برای مدیریت سیستم‌های لینوکس است. این مجموعه ابزار، برای راه‌اندازی ماشین، مدیریت سرویس‌ها، خودکار کردن سیستم‌های فایل، ثبت رخدادها، راه‌اندازی hostname و سایر فعالیت‌های سیستم استفاده می‌شود.

 

لیست کردن سرویس‌های لینوکس

Systemd، از مفهوم واحد (unit)ها استفاده می‌کند که می‌توانند سرویس‌ها، سوکت‌ها، نقاط mount، دستگاه‌ها و غیره باشند. واحدها، با استفاده از فایل‌های متنی در قالب ini تعریف می‌شوند. این فایل‌ها شامل اطلاعات مربوط به واحد، تنظیمات و دستورات اجرای آن است. پسوند فایل، نوع فایل unit را تعریف می‌کند. به عنوان مثال، فایل‌های unit سرویس سیستم دارای یک پسوند .service هستند.

Systemctl، یک ابزار خط فرمان است که برای کنترل systemd و مدیریت سرویس‌ها استفاده می‌شود. این ابزار، بخشی از اکوسیستم systemd است و به طور پیش فرض در همه سیستم‌ها در دسترس است.

برای دریافت لیستی از تمام واحدهای سرویس بارگیری شده، دستور زیر را تایپ نمایید:

sudo systemctl list-units --type service
Output:
UNIT          LOAD      ACTIVE SUB     DESCRIPTION                                                              
cron.service  loaded    active running Regular background program processing daemon 
...

 

هر خط خروجی از چپ به راست، شامل ستون‌های زیر است:

UNIT: نام واحد سرویس‌ها را نشان می‌دهد.

LOAD: اطلاعاتی را درباره اینکه فایل unit در حافظه بارگیری شده است یا خیر، تعیین می‌نماید.

ACTIVE: حالت فعال سازی فایل unit سطح بالا است که می‌تواند شامل active ،reloading ،inactive ،failed ،activating ،deactivating باشد. این، یک تعریف کلی از ستون SUB است.

SUB: حالت فعال سازی فایل unit سطح پایین است. مقدار این بخش به نوع واحد بستگی دارد. به عنوان مثال می‌تواند، در یکی از حالت‌های dead ،exited ،failed ،inactiove یا running باشد.

DESCRIPTION: شرح مختصر فایل unit است.

به طور پیش فرض، دستور systemctl تنها واحدهای فعال بارگذاری شده را لیست می‌کند. برای مشاهده واحدهای غیرفعال بارگذاری شده، گزینه all-- را نیز به دستور اضافه کنید:

sudo systemctl list-units --type service --all

اگر می‌خواهید همه فایل‌های unit نصب شده و نه تنها بارگذاری شده را مشاهده نمایید، از دستور زیر استفاده کنید:

sudo systemctl list-unit-files

 

این مطلب نیز ممکن است برای شما مفید باشد: ایجاد سرویس لینوکس با systemd

 

نمایش وضعیت سرویس‌ها

برای بررسی وضعیت یک سرویس، از دستور statusctl status استفاده نمایید:

sudo systemctl status <service_name>.service

که در آن، <service_name> نام واحد سرویس‌هایی است که می‌خواهید، بررسی کنید. به عنوان مثال، برای تعیین وضعیت فعلی سرویس nginx بایددستور زیر را اجرا نمایید:

sudo systemctl status nginx.service

در دستور بالا می‌توانید، پسوند ".service" را حذف کنید. بدین معنی که systemctl status nginx، همان systemctl status nginx.service است.

Output:
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-12-23 19:13:50 UTC; 5s ago
       Docs: man:nginx(8)
    Process: 3061052 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 3061063 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 3061064 (nginx)
      Tasks: 2 (limit: 470)
     Memory: 6.0M
     CGroup: /system.slice/nginx.service
             ├─3061064 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             └─3061065 nginx: worker process

Dec 23 19:13:50 linuxize.dev systemd[1]: Starting A high performance web server and a reverse proxy server...

 

این دستور، اطلاعات زیر را چاپ می‌کند:

Loaded: مشخص می‌کند که واحد سرویس بارگیری شده است یا خیر و مسیر کامل فایل unit را تعیین می‌نماید. همچنین نشان می‌دهد که آیا unit قادر به راه‌اندازی در زمان بالا آمدن سیستم است یا خیر.

Active: فعال و درحال اجرا بودن سرویس را مشخص می‌نماید. اگر ترمینال شما از رنگ‌ها پشتیبانی می‌کند و سرویس فعال و در حال اجرا باشد، کاراکتر (●) به همراه “active (running)” به رنگ سبز چاپ می‌شوند. این خط، همچنین مدت زمان اجرای سرویس را نشان می‌دهد.

Docs: اسناد سرویس را نشان می‌دهد.

Process: اطلاعات مربوط به فرآیندهای سرویس‌ها را نشان می‌دهد.

Main PID: این خط، PID سرویس را نشان می‌دهد.

Tasks: تعداد فعالیت‌های unit و محدودیت آن فعالیت‌ها را نشان می‌دهد.

Memory: اطلاعات مربوط به حافظه استفاده شده را نشان می‌دهد.

CGroup: اطلاعات مربوط به گروه‌های کنترل مرتبط را نشان می‌دهد.

اگر تنها می‌خواهید وضعیت سرویس را بررسی کنید، از دستور systemctl is-active استفاده نمایید. به عنوان مثال، برای تأیید در حال اجرا بودن سرویس nginx، از دستور زیر استفاده کنید:

systemctl is-active nginx.service
Output:
active

این دستور، وضعیت سرویس را به شما نشان می‌دهد. اگر سرویس فعال باشد، دستور وضعیت خروج 0 را برمی‌گرداند که هنگام استفاده از دستور داخل اسکریپت‌های shell مفید است.

 

 

 

منبع:

linuxize