در این مقاله به شما کمک میکنیم تا بتوانید با استفاده از انواع روشهای مختلف لیست سرویسهای در حال اجرا در لینوکس را مشاهده کنید. این مقاله میتواند برای کاربرانی که با سیستمعامل لینوکس سر و کار دارند مفید باشد، تا به راحتی بتوانند سرویسهای در حال اجرا در لینوکس را شناسایی و مدیریت کنند. ( سرور مجازی لینوکس )
در این مقاله ابتدا به اهمیت نمایش سرویسهای در حال اجرا در سیستمعامل لینوکس میپردازیم و سپس انواع روشهای مختلف برای لیست کردن سرویسهای در حال اجرا در لینوکس را بررسی میکنیم.
انواع روشهای نمایش لیست سرویسهای در حال اجرا در لینوکس
از نظر فنی، سرویس به فرآیند یا گروهی از فرآیندها گفته میشود که به طور مداوم در پسزمینه اجرا میشوند و منتظر ورود درخواستها (به ویژه از طرف کاربر) هستند.
برای لیست کردن سرویسهای در حال اجرا در لینوکس چندین روش مختلف وجود دارد که میتوان از آنها استفاده کرد:
- systemctl
- service
- ps
- top
- htop
- atop
در ادامه مقاله به بررسی هر یک از این دستورات میپردازیم.
نمایش سرویسهای در حال اجرا در لینوکس با استفاده از systemctl
استفاده از systemctl دستور اصلی برای مدیریت و نظارت بر سرویسها در systemd است. با استفاده از دستورات systemctl میتوانید سرویسهای در حال اجرا در سیستم خود را لیست کنید. با اجرای دستور زیر میتوانید سرویسهای در حال اجرا در لینوکس را مشاهده کنید:
systemctl list-units --type=service --state=running
دستور بالا تمامی سرویسهای در حال اجرا را به همراه وضعیت آنها نمایش میدهد. همچنین میتوانید گزینه type=service-- را با type=target-- یا سایر گزینههای systemd جایگزین کنید تا سرویسهای در حال اجرا را در حالتهای دیگر نیز مشاهده کنید.
با اجرای دستور systemctl برای مشاهده سرویسهای در حال اجرا، خروجی زیر به شما نمایش داده میشود:
DESCRIPTION | SUB | active | LOAD | UNIT |
---|---|---|---|---|
Accounts Service | running | active | loaded | accounts-daemon.service |
The Apache HTTP Server | running | active | loaded | apache2.service |
Regular background program processing daemon | running | active | loaded | cron.service |
کاربرد هر کدام از این فیلدها به صورت زیر است:
- UNIT این فیلد نام سرویس، دسته سرویسها یا واحدهای سیستمی که توسط systemd مدیریت میشوند را نمایش میدهد.
- LOAD این فیلد نشان دهنده این است که آیا سرویس در حافظه سیستم لود شده است یا نه. مقدار loaded به این معناست که سرویس از فایلهای systemd خوانده شده و در حافظه سیستم لود شده است.
- ACTIVE این فیلد نشانگر وضعیت سرویس است، که آیا سرویس در حال حاضر فعال یا غیرفعال است.
- SUB این فیلد وضعیت اجرایی سرویس را نمایش میدهد. به طور مثال running به معنای در حال اجرا و exited به معنای خاتمه یافته میباشد.
- DESCRIPTION این فیلد توضیحات مربوط به سرویس را نشان میدهد. این توضیحات شامل کاربرد و وظایفی که سرویس بر عهده دارد، میباشد.
دستور systemctl list-units دارای گزینههای مختلفی است که میتوانید از آنها برای مشاهده سرویسهای در حال اجرا استفاده کنید. برخی از این گزینهها شامل موارد زیر میشود:
- type=service--این گزینه تنها سرویسها را نمایش میدهد.
- type=target--با استفاده از این گزینه میتوانید تنها سرویسهایی را نمایش دهید که مربوط به گروههای مشخصی از سرویسها هستند.
- state=running--این گزینه فقط سرویسهای در حال اجرا را نمایش میدهد.
- all--این گزینه به شما اجازه میدهد تا تمام سرویسهای systemd را مشاهده کنید، حتی اگر در حال اجرا نباشند.
- no - pager--این گزینه نتایج را به صورت فوری و بدون استفاده از صفحه بندی نمایش میدهد.
- no - legend--این گزینه نتایج را بدون header نمایش میدهد.
با استفاده از ترکیب این گزینهها میتوانید نتایج دقیقتری از لیست سرویسهای در حال اجرا دریافت کنید.
نمایش سرویسهای در حال اجرا در لینوکس با دستور service
با استفاده از دستور service میتوان لیست همه سرویسها را نمایش داد و وضعیت آنها را بررسی کرد. البته توجه داشته باشید که این دستور ممکن است در برخی از توزیعهای لینوکس کارایی پایینی داشته باشد و نتایج دقیقی نداشته باشد؛ اما در توزیعهای قدیمی سیستمهای لینوکسی که دارای سیستم مدیریت SysVinit هستند به درستی نتیجه را نمایش میدهد. ( آموزش ایجاد کاربر sudo در Ubuntu )
با استفاده از دستور زیر میتوانید تمام سرویسهای موجود به همراه وضعیت آنها را مشاهده کنید:
service --status-all
دستور service وضعیت سرویسهای لیست شده را با استفاده از علامتهایی نشان میدهد که هر کدام نشان دهنده وضعیت هر سرویس است. این علامتها در جدول زیر آورده شده است.
علامت | توضیحات |
---|---|
+ | سرویس در وضعیت فعال (running) است و به درستی اجرا شده |
– | سرویس در وضعیت غیرفعال (stopped) است و متوقف شده است |
? | وضعیت سرویس غیرقابل تشخیص است و اطلاعات آن موجود نیست |
! | وضعیت سرویس نامشخص یا نامعلوم است |
E | سرویس در وضعیت خطا (error) قرار دارد |
… | سیستم در حال بررسی وضعیت سرویس است و وضعیت نهایی هنوز مشخص نشده است |
برای نمایش لیست سرویسهای در حال اجرا میتوانید دستور قبل را اینگونه تغییر دهید:
service --status-all | grep running
با اجرای دستور بالا میتوانید وضعیت فعلی سرویسهای در حال اجرا را بررسی کنید و اگر نیاز به مدیریت یا انجام عملیاتی برای هر سرویس داشتید از دستورات مدیریتی مانند start، stop یا restart استفاده کنید. به عنوان مثال از دستور زیر میتوانید برای توقف یک سرویس استفاده کنید:
service service_name stop
لیست کردن سرویسهای در حال اجرا در لینوکس با دستور ps
دستور ps یکی از پرکاربردترین دستورات برای نمایش اطلاعات درباره فرآیندها در سیستم است. با استفاده از این دستور میتوانید اطلاعاتی نظیر فهرست و شناسه سرویسهای در حال اجرا، مصرف CPU، مصرف حافظه و وضعیت فعلی سرویس را مشاهده کنید. همچنین میتوانید با استفاده از گزینهها و آرگومانهای مختلف با دستور ps، اطلاعات مربوط به سرویسهای خاصی را نمایش دهید.
دستور کلی ps به صورت زیر است:
ps [options]
اگر دستور بالا را بدون هیچ آرگومانی اجرا کنیم، یک خروجی مانند زیر به ما نمایش میدهد:
CMD | TIME | TTY | PID |
---|---|---|---|
systemd | 00:00:02 | ? | 1 |
kthreadd | 00:00:00 | ? | 2 |
این خروجی شامل اطلاعاتی مانند:
- PID شناسه فرآیند
- TTYنوع ترمینال مربوطه
- TIMEزمانی که فرآیند در حال اجرا بوده
- CMDنام دستور
مهمترین آرگومانهایی که میتوانید در دستور ps استفاده کنید به شرح زیر هستند:
- e-تمامی فرآیندها را نمایش میدهد. (فرآیندهای سیستم و کاربر)
- f-اطلاعات کامل هر فرآیند را نمایش میدهد.
- u-فرآیندهای مربوط به یک کاربر خاص را نمایش میدهد.
- ...,p pid1,pid2-اطلاعات فرآیندها با شناسههای مشخص را نمایش میدهد.
- a-تمامی فرآیندها را نمایش میدهد. (مانند آرگومان e-)
- x-فرآیندهای مربوط به ترمینالهای دیگر را نمایش نمیدهد.
- format -oفرمت خروجی را برای نمایش اطلاعات تعیین میکند.
ps -ax
دستور بالا تنها سرویسهای در حال اجرا را نمایش میدهد و سرویسهای مربوط به ترمینالهای دیگر را در نظر نمیگیرد.
ps -aux
این دستور بدون در نظر گرفتن سرویسهای ترمینال دیگر، تمامی سرویسها را با اطلاعات کاربری نمایش میدهد.
ps -u username
فرآیندهای مربوط به یک کاربر خاص (username) را نمایش میدهد.
لیست کردن سرویسهای در حال اجرا در لینوکس با دستور top
از دستور top معمولا برای نمایش مصرف منابع سیستم توسط سرویسها، استفاده میشود و به طور پیشفرض لیست کاملی از سرویسهای در حال اجرا در لینوکس را نمایش میدهد. دستور top خروجی را به صورت real time نمایش میدهد، به این معنا که خروجی را هر 3 ثانیه یک بار به روزرسانی میکند.
دستور کلی top در لینوکس به صورت زیر است:
top [options]
در قسمت options آرگومانهای مختلفی را میتوان قرار داد. این گزینهها شامل تنظیماتی برای نمایش فرآیندها، مصرف منابع سیستم توسط سرویسها و سایر اطلاعات مربوط به فرآیندها و پردازنده است.
همانطور که در بالا به آن اشاره کردیم، دستور top به صورت پیشفرض همه سرویسها و برنامههایی که در سیستم در حال اجرا هستند را نمایش میدهد. اگر این دستور را بدون هیچ آرگومانی اجرا کنید خروجی آن به صورت زیر خواهد بود:
لیست کردن سرویسهای در حال اجرا در لینوکس با دستور htop
htop یک ابزار مانیتورینگ تعاملی است که اطلاعات مربوط به سرویسها و فرآیندهای در حال اجرا را به صورت لحظهای بروزرسانی و نمایش میدهد. اطلاعاتی که دستور htop از سرویسها و فرآیندهای در حال اجرا نمایش میدهد شامل نام فرآیند، PID، مصرف منابع (مانند cpu و حافظه) و ... است. همچنین به دلیل تعاملی بودن این دستور، میتوان با استفاده از کلیدهای مختلف، عملیات مختلفی را انجام داد و اطلاعات مورد نیاز خود را بدست آورد.
برای نمایش لیست سرویسهای در حال اجرا در لینوکس ابتدا باید دستور htop را نصب کنید زیرا اکثر نسخههای لینوکس به آن مجهز نیستند.
دستور زیر برای نصب دستور htop روی نسخههای Ubuntu و Debian استفاده میشود:
sudo apt update
sudo apt install htop
و نسخههای مبتنی بر Fedora، CentOS و Red Hat:
sudo dnf install htop
برای نمایش لیست سرویسهای در حال اجرا در لینوکس کافیست که دستور htop را به تنهایی اجرا کنید تا لیست فرآیندها و سرویسها و منابع مصرفی سیستم به شما نمایش داده شود.
این جدول شامل اطلاعاتی از هر سرویس مانند شناسه سرویس (PID)، نام کاربری (USER)، درصد استفاده از CPU (CPU%)، درصد استفاده از حافظه (MEM%) و غیره است.
با استفاده از پارامترهای مختلف میتوانید تنظیمات مختلفی را اعمال کنید. برخی از این پارامترها شامل:
- u-/--userنمایش فرآیندهای یک کاربر خاص با استفاده از نام کاربری آن.
- p-/--pidنمایش فرآیندها با شناسههای مشخص.
- s-/--sort-keyمرتب کردن لیست سرویسها براساس ستون مشخص شده. (مثلا بر اساس میزان استفاده از cpu)
همچنین میتوانید برای انجام عملیات مختلفی مانند مرتب سازی سرویسها، نمایش اطلاعات اضافی و تعیین تنظیمات نمایشی از کلیدهای میانبر استفاده کرد که این کلیدها به صورت زیر هستند:
- (setup) F2ورود به منوی تنظیمات
- (search) F3جستجوی سرویسها بر اساس نام
- (filter) F4فیلتر کردن لیست سرویسها بر اساس یک معیار خاص
- (tree) F5نمایش سرویسها به صورت درختی
- (sortby) F6مرتب سازی لیست سرویسها بر اساس یک ستون خاص
- (nice -1) F7کاهش اولویت یک سرویس
- (nice +1) F8افزایش اولویت یک سرویس
- (kill) F9ارسال سیگنال kill به یک سرویس (حذف یک سرویس)
- (quit) F10خروج از برنامه
بدون دیدگاه