مدیریت و مانیتورینگ فرایند ها – بخش دوم(دستور ps)

ps برای نمایش فرایند ها فعال در سیستم و اطلاعات آنها بکار می رود. خروجی ps یک حالت ثابت است و برای نمایش خروجی های پویا باید از دستور top استفاده کنید.دارای تعداد زیادی سوئیچ است که خروجی را سفارشی می کند. به همین منظور برای دانشتن وضعیت های گوناگون و اطلاعات گوناگون باید از سوئیچ های متفاوت بصورت ترکیبی استفاده نمایید.

پیش از هر چیز خواندن این مطلب مهم است.

نکته دیگر در ارتباط با سوئیچ های این دستور اینکه سه نوع سوئیچ داریم

  • سوئیچ های یونیکسی، که با یک dash و یک فاصله از دستور جدا می شوند.
  • سوئیچ های بی اس دی، با یک فاصله از دستور جدا می شوند و نیازی به dash نیست.
  • سوئیچ های گنو (Gnu)، که با دو تا dash و یک فاصله از دستور جدا می شوند.

همانطور که در این مطلب گفته شد هر فرایند دارای یک کاربر است که آنرا اجرا کرده است. این کاربر موسوم به Effective User یا euser است. دستور ps اطلاعات را برای هر euser نشان می دهد (یعنی کدام فرایند به کدام کاربر اختصاص دارد). همچنین از دیگر اطلاعاتی که نشان داده می شود (همه اطلاعات پایین مهم هستند ولی آنهایی که bold شده اند بصورت روزمره و مکرر استفاده می شوند)

CPU% : میزان مصرف پردازنده توسط فرایند به درصد.

MEM% : میزان مصرف حافظه Ram توسط فرایند به در صد.

ADDR : آدرس فیزیکی فرایند درون حافظه Ram.

C or CP : اطلاعات پردازنده مصرفی و اطلاعات زمانبندی.

COMMAND : نشان دهنده دستور اجرایی. منظور همان فرایند است که یک PID دارد.

NI : مقدار nice.

F : برخی از Flag های پردازنده.

PID : شناسه فرایند.

PPID : شناسه والد فرایند.

PRI : مقدار Priority یا اولویت فرایند.

RSS : استفاده Real از حافظه اصلی.

S or STAT : وضعیت فرایند.

START or STIME : زمان شروع به کار فرایند (زمانی که فرایند CPU را برای اجرا شدن می گیرد).

SZ : میزان مصرف حافظه مجازی.

TT or TTY : شماره ترمینالی که دستور یا فرایند از آنجا اجرا میشود.

UID or USER : کاربری که دستور یا فرایند را اجرا کرده است.

اما همانطور که در این مطلب گفته شد، هر فرایند دارای وضعیتی است که می توان به موارد زیر اشاره کرد.

D : حالت Sleep اضطراری (Uninterruptible) بطور مثال فرایند برای انجام عمل I/O به خواب رفته است.

S : برای انجام عمل وقفه به خواب رفته است.

R : حالت Running یا اجرا

T : فرایند خاتمه یا Terminate یافته است. بطور مثال کار فرایند تمام شده یا اینکه یا Ctrl+C سیگنال Terminate به آن داده شده است و یا اینکه فرایند والد از بین رفته است.

استفاده از دستور

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

  • نمایش تمام فرایند های در حال اجرا با یکی از دستور های زیر

ps -e
ps -ef
ps -eF
ps -ely

ps ax
ps axu

سوئیچ  e- : نمایش تمامی فرایند ها. این سوئیج معادل سویچ A- نیز است.

u : برای نمایش به تفکیک نام کاربری. شکل کلی آن بصورت زیر است. اگر چیزی بجای USERNAME نوشته نشود بصورت پیش فرض root در نظر گرفته میشود.

ps -u USERNAME

f- : خروجی های بیشتری نشان میدهد. دستور بالا را بدون این سوئیچ استفاده کنید تا تفاوت را بینید.

  • اگر می خواهید خروجی بر اساس شناسه کاربری یا دستور چاپ شود باید از سوئیچ های U- و C- استفاده کنید. فرمت دستوری اول بجای UID شناسه کاربری فرد قرار می گیرد. بطور مثال برای root این عدد 1 است و در فرمت دستوری دوم بجای CMD نام دستور آورده می شود.

ps  -U UID

ps  -C CMD

همچنین می توانید اطلاعات چندین کاربر را اشته باشید.

ps  -U UID1,UID2

  • اگر می خواهید خروجی بر اساس شناسه فرایند یا شناسه والد فرایند نشان داده شود به ترتیب دستور اول و دوم را بکار ببرید.

ps  -p PID

ps  -pid PPID

همچنین می توانید اطلاعات چندین فرایند را نیز داشته باشید.

ps  -p PID1,PID2

  • برای نمایش درختی فرایند ها (والد-فرزندی) از یکی دستورهای زیر استفاده کنید.

ps -ejH

ps -e -o pid,args –forest

ps axjf

  • برای بدست آوردن اطلاعاتی از نخ ها دستور های زیر را اجرا کنید. (نخ واحد اجرایی هر فرایند است که وظیفه خاصی را دارد. فرض کنید یک برنامه پردازش متن مانند openoffice وجود دارد. این برنامه یک فرایند دارد که در این فرایند چندین نخ وجود دارد که هر کدام وظیف خاص دارد. بطور مثال یک نخ وظیه انجام Ctrl+S را پس از نوشتن هر خط انجام می دهئ و یک فرایند وظیف چیدمان را انجام میدهد. به خاطر وجود همین نخ هاست که شما در ویرایشگر متن می توانید چندین عمل را بصرت همزمان و بدون تداخل در کار یکدیگر انجام دهید. ولی در فرایند های قدیمی اینطور نبود چون این فرایند ها همگی دارای یک نخ بوده اند)

ps -eLf
ps axms

  • برای بدست اوردن اطلاعات امنیتی از دستور های زیر استفاده کنید.

 ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM