دستور ps (مخفف processes status) یک ابزار لینوکسی برای مشاهده اطلاعات مربوط به یک Process یا پروسس های در حال اجرای سیستم میباشد. این دستور اطلاعات را از فایل های مجازی در فایل سیستم proc میخواند. این یکی از ابزار مهم برای مدیریت سیستم، خصوصا مانیتورینگ سیستم میباشد، که به شما کمک میکند تا متوجه شوید چه اتفاقی در سیستم لینوکس میافتد.
همچنین دستور ps داری آپشن های زیادی برای دستکاری خروجی اش دارد، با این حال برای شما تعداد کمی از آنها برای استفاده روزانه مفید خواهد بود.
همچنین توصیه میشود مطالعه کنید :
آنچه که شما باید در باره پروسس ها درLinux بدانید
در این مقاله، ما میخواهیم 30 مثال از دستورات ps برای مانیتور کردن پراسس های در حال اجرا در یک سیستم لینوکسی را مشاهده کنیم.
توجه داشته باشید که خط اول خروجی ps نشان دهنده معنی اطلاعات هر یک از ستون ها میباشد، شما میتوانید معنی تمام این اصطلاحات را از طریق صفحه man ps پیدا کنید.
لیست تمام Process های در Shell جاری
1 - اگر شما دستور ps را بدون هیچ آپشنی اجرا کنید، به شما فقط پروسس های shell فعلی را نمایش میدهد.
نمایش تمام Process ها با فرمتی متفاوت
2 - نمایش پروسس های فعال در سیستم لینوکس به فرمت کلی (Unix/Linux)
3 - نمایش تمام Process ها به فرمت BSD (مخفف Berkeley Software Distribution)
4 - برای لیست کردن به فرمت کامل، از آپشن -f یا -F استفاده کنید.
نمایش Process های در حال اجرای کاربر
5 - شما میتوانید تمام پروسس هایی که برای user شما هست را به صورت زیر انتخاب کنید. (در این سناریو دستور ps با root اجرا شده است)
6 - برای نمایش پروسس های یک کاربر با ID واقعی یا نام آن (RUID)، از آپشن -U استفاده کنید.
7 - برای انتخاب پروسس های یک کاربر با ID یا نام کاربر (EUID) از آپشن -u استفاده کنید.
نمانیش تمام Process های در حال اجرای یوزر Root (توسط ID)
8 - دستور زیر هر Process ی که توسط یوزر root اجرا شده باشد را به فرمت یوزر برای شما نمایش خواهد داد.
نمایش Process های متعلق به یک گروه
9 - اگر شما بخواهید تمام پروسس هایی که به گروه خاصی متعلق هستند (ID واقعی گروه (RGID) یا نام گروه) را لیست کنید از دستور زیر استفاده نمایید.
10 - برای لیست کردن تمام پروسس ها براساس نام گروهی که پروسس به آن تعلق دارد (یا session) از دستور زیر استفاده میکنیم.
نمایش Process ها از طریق PID و PPID
11 - شما میتوانید پروسس ها را با استفاده از PID شبیه به زیر لیست کنید.
12 - برای انتخاب کردن پروسس با استفاده از PPID دستور زیر را تایپ کنید.
13 - با استفاده از دستور زیر و با استفاده از لیست PID پروسس را نمایش دهید.
نمایش Process ها با استفاده از TTY
14 - برای انتخاب پروسس ها با استفاده از tty از آپشن -t همانند زیر استفاده کنید.
نمایش درختی پروسس ها (Process Tree)
15 - یک درخت پروسس نمایش میدهد که چگونه پروسس های روی سیستم به یکدیگر لینک شده اند، همچنین پروسس هایی که parent آنها kill شده اند توسط init (یا systemd) سرپرستی میشوند.
16 - شما همچنین میتوانید یک درخت پروسس (Process Tree) را تنها برای یک پروسس مشخص نمایش دهید.
نمایش Process Thread ها
17 - برای نمایش تمام thread های یک پروسس از آپشن -H استفاده میکنیم، این آپشن ستون LWP (مخفف Light Weight Process یا پروسس های سبک) و NLWP (مخفف Number of Light Weight Process - تعداد پروسس های سبک) را نمایش خواهد داد.
مشخص کردن فرمت خروجی دلخواه
با استفاده از -o یا -format دستور ps به شما این امکان را میدهد که فرمت خروجی تعریف شده توسط کاربر خود را همانند تصویر زیر داشته باشید.
18 - برای لیست کردن همه موارد مشخص کننده فرمت از آپشن L استفاده میکنیم.
19 - دستور زیر به شما امکان نمایش PID, PPID، نام کاربر و دستور مربوط به یک پروسس را میدهد.
20 - دستور زیر مثال دیگری از فرمت خروجی دلخواه میباشد که گروه فایل سیستم، مقدار Nice، زمان شروع و زمان سپری شده از یک پروسس را نمایش میدهد.
21 - برای پیدا کردن نام یک پروسس با استفاده از PID آن از دستور زیر استفاده کنید.
نمایش پروسس های Parent و Child
22 - برای انتخاب یک پروسس مشخص با استفاده از نام آن از آپشن -C استفاده میشود که این آپشن همچنین تمام پروسس های child پروسس اصلی را نیز نمایش خواهد داد.
23 - پیدا کردن تمام PID های همه نمونه های یک پروسس به هنگام نوشتن اسکریپت هایی که نیاز به خواندن PID ها از یک خروجی استاندارد یا یک فایل دارند امری بسیار مفید است که با استفاده از دستور زیر میتوانیم به این هدف دست پیدا کنیم.
24 - برای بررسی کردن execution time (مدت زمان اجرا) مربوط به یک پروسس از دستور زیر استفاده میکنیم.
خروجی زیر نمایش میدهد که سرویس HTTPD به مدت 1 ساعت و 48 دقیقه و 17 ثانیه میباشد که در حال اجراست.
Troubleshoot کردن کارایی سیستم لینوکس
اگر سیستم شما آنطور که باید کار نمیکند برای مثال اگر به صورت غیر طبیعی کند است شما میتوانید یک سری ترابل شوت ها روی سیستم همانند زیر انجام دهید.
26 - پیدا کردن پروسس های در حال اجرا بر اساس مصرف بالای CPU و Memory در لینوکس از دستور زیر استفاده میکنیم.
27 - برای kill کردن یک پروسس لینوکسی یا اپلیکیشن های بی مسئولیت (Unresponsive) و یا هر پروسسی که در حال مصرف بالایی از CPU است، ابتدا باید PID پروسس یا اپلیکیشن را با استفاده از دستور زیر پیدا کنید،
سپس از دستور kill برای خاتمه دادن سریع به آن استفاده میکنیم.
نمایش اطلاعات امنیتی
28 - برای نمایش بخش امنیتی (خصوصا برای SELinux) شبیه به زیر عمل میکنیم.
29 - شما همچنین میتوانید اطلاعات امنیتی را به فرمت مورد نظر کاربر با استفاده از دستور زیر نمایش دهید.
مانیتورینگ realtime (لحظه ای) پروسس ها با استفاده از ابزار watch
30 - نهایتا از آنجایی که دستور ps اطلاعات ثابتی را به شما نمایش میدهد شما میتوانید از ابزار watch برای مانیتورینگ لحظه ای پروسس با خروجی های مکرر استفاده کنیم که بعد از هر ثانیه خروجی نمایش خواهد داد همانند دستور زیر که یک دستور دلخواه ps را به منظور هدف مورد نظر مشخص کرده است.
نکته : ps تنها اطلاعات ثابت را نمایش میدهد برای نمایش مکرر خروجی آپدیت شده شما میتوانید از ابزارهایی همانند htop, top و glances استفاده کنید. دو مورد آخر در حقیقت ابزارهای مانیتورینگ performace سیستم لینوکسی میباشند.
همچنین توصیه میشود مقالات زیر را مطالعه کنید :
آنچه که شما باید درباره process ها در لینوکس بدانید
آموزش نحوه پیداکردن پروسس در حال اجرا و kill کردن آن در لینوکس
راهنمای دستورات Kill - PKill و Killall برای بستن یک پروسس در لینوکس
چگونه با استفاده از PID Number نام یک Process را در لینوکس پیدا کنیم
نحوه پیدا کردن Process های در حال اجرا که CPU و RAM زیادی در Linux مصرف میکنند
متوقف کردن و غیر فعال کردن سرویس های ناخواسته در لینوکس
آموزش نحوه پیداکردن پروسس در حال اجرا و kill کردن آن در لینوکس
نحوه Kill کردن Process های بی مسئولیت با استفاده از دستور xkill در لینوکس
نحوه ارسال دستورات Linux به بک گراند و برگرداندن آن پروسس به ترمینال
نحوه بررسی ریسورس های مصرفی توسط کاربران در لینوکس (CPU, Memory)
اگر شما هر گونه مثال مفیدی از دستور ps دارید با ما در اینجا به اشتراک بگذارید. (فراموش نکنید که توضیح دهید این دستور به چه منظور استفاده میشود)
همچنین دستور ps داری آپشن های زیادی برای دستکاری خروجی اش دارد، با این حال برای شما تعداد کمی از آنها برای استفاده روزانه مفید خواهد بود.
همچنین توصیه میشود مطالعه کنید :
آنچه که شما باید در باره پروسس ها درLinux بدانید
در این مقاله، ما میخواهیم 30 مثال از دستورات ps برای مانیتور کردن پراسس های در حال اجرا در یک سیستم لینوکسی را مشاهده کنیم.
توجه داشته باشید که خط اول خروجی ps نشان دهنده معنی اطلاعات هر یک از ستون ها میباشد، شما میتوانید معنی تمام این اصطلاحات را از طریق صفحه man ps پیدا کنید.
لیست تمام Process های در Shell جاری
1 - اگر شما دستور ps را بدون هیچ آپشنی اجرا کنید، به شما فقط پروسس های shell فعلی را نمایش میدهد.
کد PHP:
$ ps
نمایش تمام Process ها با فرمتی متفاوت
2 - نمایش پروسس های فعال در سیستم لینوکس به فرمت کلی (Unix/Linux)
کد PHP:
$ ps -A
OR
$ ps -e
3 - نمایش تمام Process ها به فرمت BSD (مخفف Berkeley Software Distribution)
کد PHP:
$ ps au
OR
$ ps axu
4 - برای لیست کردن به فرمت کامل، از آپشن -f یا -F استفاده کنید.
کد PHP:
$ ps -ef
OR
$ ps -eF
نمایش Process های در حال اجرای کاربر
5 - شما میتوانید تمام پروسس هایی که برای user شما هست را به صورت زیر انتخاب کنید. (در این سناریو دستور ps با root اجرا شده است)
کد PHP:
$ ps -x
6 - برای نمایش پروسس های یک کاربر با ID واقعی یا نام آن (RUID)، از آپشن -U استفاده کنید.
کد PHP:
$ ps -fU tecmint
OR
$ ps -fu 1000
7 - برای انتخاب پروسس های یک کاربر با ID یا نام کاربر (EUID) از آپشن -u استفاده کنید.
کد PHP:
$ ps -fu tecmint
OR
$ ps -fu 1000
نمانیش تمام Process های در حال اجرای یوزر Root (توسط ID)
8 - دستور زیر هر Process ی که توسط یوزر root اجرا شده باشد را به فرمت یوزر برای شما نمایش خواهد داد.
کد PHP:
$ ps -U root -u root
نمایش Process های متعلق به یک گروه
9 - اگر شما بخواهید تمام پروسس هایی که به گروه خاصی متعلق هستند (ID واقعی گروه (RGID) یا نام گروه) را لیست کنید از دستور زیر استفاده نمایید.
کد PHP:
$ ps -fG apache
OR
$ ps -fG 48
10 - برای لیست کردن تمام پروسس ها براساس نام گروهی که پروسس به آن تعلق دارد (یا session) از دستور زیر استفاده میکنیم.
کد PHP:
$ ps -fg apache
نمایش Process ها از طریق PID و PPID
11 - شما میتوانید پروسس ها را با استفاده از PID شبیه به زیر لیست کنید.
کد PHP:
$ ps -fp 1178
12 - برای انتخاب کردن پروسس با استفاده از PPID دستور زیر را تایپ کنید.
کد PHP:
$ ps -f --ppid 1154
13 - با استفاده از دستور زیر و با استفاده از لیست PID پروسس را نمایش دهید.
کد PHP:
$ ps -fp 2226,1154,1146
نمایش Process ها با استفاده از TTY
14 - برای انتخاب پروسس ها با استفاده از tty از آپشن -t همانند زیر استفاده کنید.
کد PHP:
$ ps -t pst/0
$ ps -t pst/1
$ ps -ft tty1
نمایش درختی پروسس ها (Process Tree)
15 - یک درخت پروسس نمایش میدهد که چگونه پروسس های روی سیستم به یکدیگر لینک شده اند، همچنین پروسس هایی که parent آنها kill شده اند توسط init (یا systemd) سرپرستی میشوند.
کد PHP:
$ ps -e --forest
16 - شما همچنین میتوانید یک درخت پروسس (Process Tree) را تنها برای یک پروسس مشخص نمایش دهید.
کد PHP:
$ ps -f --forest -C sshd
OR
$ ps -ef --forest | grep -v grep | grep sshd
نمایش Process Thread ها
17 - برای نمایش تمام thread های یک پروسس از آپشن -H استفاده میکنیم، این آپشن ستون LWP (مخفف Light Weight Process یا پروسس های سبک) و NLWP (مخفف Number of Light Weight Process - تعداد پروسس های سبک) را نمایش خواهد داد.
کد PHP:
$ ps -fL -C httpd
مشخص کردن فرمت خروجی دلخواه
با استفاده از -o یا -format دستور ps به شما این امکان را میدهد که فرمت خروجی تعریف شده توسط کاربر خود را همانند تصویر زیر داشته باشید.
18 - برای لیست کردن همه موارد مشخص کننده فرمت از آپشن L استفاده میکنیم.
کد PHP:
$ ps L
19 - دستور زیر به شما امکان نمایش PID, PPID، نام کاربر و دستور مربوط به یک پروسس را میدهد.
کد PHP:
$ ps -eo pid,ppid,user,cmd
20 - دستور زیر مثال دیگری از فرمت خروجی دلخواه میباشد که گروه فایل سیستم، مقدار Nice، زمان شروع و زمان سپری شده از یک پروسس را نمایش میدهد.
کد PHP:
$ ps -p 1154 -o pid,ppid,fgroup,ni,lstart,etime
21 - برای پیدا کردن نام یک پروسس با استفاده از PID آن از دستور زیر استفاده کنید.
کد PHP:
$ ps -p 1154 -o comm=
نمایش پروسس های Parent و Child
22 - برای انتخاب یک پروسس مشخص با استفاده از نام آن از آپشن -C استفاده میشود که این آپشن همچنین تمام پروسس های child پروسس اصلی را نیز نمایش خواهد داد.
کد PHP:
$ ps -C sshd
23 - پیدا کردن تمام PID های همه نمونه های یک پروسس به هنگام نوشتن اسکریپت هایی که نیاز به خواندن PID ها از یک خروجی استاندارد یا یک فایل دارند امری بسیار مفید است که با استفاده از دستور زیر میتوانیم به این هدف دست پیدا کنیم.
کد PHP:
$ ps -C httpd -o pid=
24 - برای بررسی کردن execution time (مدت زمان اجرا) مربوط به یک پروسس از دستور زیر استفاده میکنیم.
کد PHP:
$ ps -eo comm,etime,user | grep httpd
Troubleshoot کردن کارایی سیستم لینوکس
اگر سیستم شما آنطور که باید کار نمیکند برای مثال اگر به صورت غیر طبیعی کند است شما میتوانید یک سری ترابل شوت ها روی سیستم همانند زیر انجام دهید.
26 - پیدا کردن پروسس های در حال اجرا بر اساس مصرف بالای CPU و Memory در لینوکس از دستور زیر استفاده میکنیم.
کد PHP:
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
OR
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
27 - برای kill کردن یک پروسس لینوکسی یا اپلیکیشن های بی مسئولیت (Unresponsive) و یا هر پروسسی که در حال مصرف بالایی از CPU است، ابتدا باید PID پروسس یا اپلیکیشن را با استفاده از دستور زیر پیدا کنید،
کد PHP:
$ ps -A | grep -i stress
کد PHP:
$ kill -9 2583 2584
نمایش اطلاعات امنیتی
28 - برای نمایش بخش امنیتی (خصوصا برای SELinux) شبیه به زیر عمل میکنیم.
کد PHP:
$ ps -eM
OR
$ ps -e --context
29 - شما همچنین میتوانید اطلاعات امنیتی را به فرمت مورد نظر کاربر با استفاده از دستور زیر نمایش دهید.
کد PHP:
$ ps -eo euser,ruser,suser,fuser,f,comm,label
مانیتورینگ realtime (لحظه ای) پروسس ها با استفاده از ابزار watch
30 - نهایتا از آنجایی که دستور ps اطلاعات ثابتی را به شما نمایش میدهد شما میتوانید از ابزار watch برای مانیتورینگ لحظه ای پروسس با خروجی های مکرر استفاده کنیم که بعد از هر ثانیه خروجی نمایش خواهد داد همانند دستور زیر که یک دستور دلخواه ps را به منظور هدف مورد نظر مشخص کرده است.
کد PHP:
$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'
نکته : ps تنها اطلاعات ثابت را نمایش میدهد برای نمایش مکرر خروجی آپدیت شده شما میتوانید از ابزارهایی همانند htop, top و glances استفاده کنید. دو مورد آخر در حقیقت ابزارهای مانیتورینگ performace سیستم لینوکسی میباشند.
همچنین توصیه میشود مقالات زیر را مطالعه کنید :
آنچه که شما باید درباره process ها در لینوکس بدانید
آموزش نحوه پیداکردن پروسس در حال اجرا و kill کردن آن در لینوکس
راهنمای دستورات Kill - PKill و Killall برای بستن یک پروسس در لینوکس
چگونه با استفاده از PID Number نام یک Process را در لینوکس پیدا کنیم
نحوه پیدا کردن Process های در حال اجرا که CPU و RAM زیادی در Linux مصرف میکنند
متوقف کردن و غیر فعال کردن سرویس های ناخواسته در لینوکس
آموزش نحوه پیداکردن پروسس در حال اجرا و kill کردن آن در لینوکس
نحوه Kill کردن Process های بی مسئولیت با استفاده از دستور xkill در لینوکس
نحوه ارسال دستورات Linux به بک گراند و برگرداندن آن پروسس به ترمینال
نحوه بررسی ریسورس های مصرفی توسط کاربران در لینوکس (CPU, Memory)
اگر شما هر گونه مثال مفیدی از دستور ps دارید با ما در اینجا به اشتراک بگذارید. (فراموش نکنید که توضیح دهید این دستور به چه منظور استفاده میشود)