نمایش سرویس‌های در حال اجرا در لینوکس

زمان مطالعه: 4 دقیقه

در این مقاله به شما کمک می‌کنیم تا بتوانید با استفاده از انواع روش‌های مختلف لیست سرویس‌های در حال اجرا در لینوکس را مشاهده کنید. این مقاله می‌تواند برای کاربرانی که با سیستم‌عامل لینوکس سر و کار دارند مفید باشد، تا به راحتی بتوانند سرویس‌های در حال اجرا در لینوکس را شناسایی و مدیریت کنند. ( سرور مجازی لینوکس )

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

سرویس‌های در حال اجرا در لینوکس
سرویس‌های در حال اجرا در لینوکس

انواع روش‌های نمایش لیست سرویس‌های در حال اجرا در لینوکس

از نظر فنی، سرویس به فرآیند یا گروهی از فرآیندها گفته می‌شود که به طور مداوم در پس‌زمینه اجرا می‌شوند و منتظر ورود درخواست‌ها (به ویژه از طرف کاربر) هستند.

برای لیست کردن سرویس‌های در حال اجرا در لینوکس چندین روش مختلف وجود دارد که می‌توان از آن‌ها استفاده کرد:

  • 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) را نمایش می‌دهد.

بدون دیدگاه

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

هاستvpsسرور اختصاصی