نتورک کار

به راحتی متخصص شبکه شوید

سبد خرید 0

دستور ps در لینوکس برای مانیتور کردن پروسس ها

دستور ps در لینوکس برای مانیتور کردن پروسس ها

دستور ps (مخفف processes status) یک ابزار لینوکسی برای مشاهده اطلاعات مربوط به یک Process یا پروسس های در حال اجرای سیستم میباشد. این دستور اطلاعات را از فایل های مجازی در فایل سیستم proc میخواند. این یکی از ابزار مهم برای مدیریت سیستم، خصوصا مانیتورینگ سیستم میباشد، که به شما کمک میکند تا متوجه شوید چه اتفاقی در سیستم لینوکس میافتد.

همچنین دستور ps داری آپشن های زیادی برای دستکاری خروجی اش دارد، با این حال برای شما تعداد کمی از آنها برای استفاده روزانه مفید خواهد بود.

در این مقاله، ما میخواهیم ۳۰ مثال از دستورات ps برای مانیتور کردن پراسس های در حال اجرا در یک سیستم لینوکسی را مشاهده کنیم.

توجه داشته باشید که خط اول خروجی ps نشان دهنده معنی اطلاعات هر یک از ستون ها میباشد، شما میتوانید معنی تمام این اصطلاحات را از طریق صفحه man ps پیدا کنید.

لیست تمام Process های در Shell جاری

۱ – اگر شما دستور ps را بدون هیچ آپشنی اجرا کنید، به شما فقط پروسس های shell فعلی را نمایش میدهد.

کد PHP:

$ ps  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 1-List-Current-Running-Processes.png مشاهده: 1 حجم: 3.4 کیلو بایت

نمایش تمام Process ها با فرمتی متفاوت

۲ – نمایش پروسس های فعال در سیستم لینوکس به فرمت کلی (Unix/Linux)

کد PHP:

$ ps -A
OR
$ ps -e  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 2-List-Processes-in-Standard-Format.png مشاهده: 1 حجم: 10.9 کیلو بایت

۳ – نمایش تمام Process ها به فرمت BSD (مخفف Berkeley Software Distribution)

کد PHP:

$ ps au

OR


$ ps axu  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 3-List-Processes-in-BSD-Format.png مشاهده: 1 حجم: 7.8 کیلو بایت

۴ – برای لیست کردن به فرمت کامل، از آپشن -f یا -F استفاده کنید.

کد PHP:

$ ps -ef
OR
$ ps -eF  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 4-List-Processes-in-Long-List-Format.png مشاهده: 1 حجم: 7.2 کیلو بایت

نمایش Process های در حال اجرای کاربر

۵ – شما میتوانید تمام پروسس هایی که برای user شما هست را به صورت زیر انتخاب کنید. (در این سناریو دستور ps با root اجرا شده است)

کد PHP:

$ ps -x  

۶ – برای نمایش پروسس های یک کاربر با ID واقعی یا نام آن (RUID)، از آپشن -U استفاده کنید.

کد PHP:

$ ps -fU tecmint
OR
$ ps -fu ۱۰۰۰  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 6-List-User-Processes-by-ID.png مشاهده: 1 حجم: 13.0 کیلو بایت

۷ – برای انتخاب پروسس های یک کاربر با ID یا نام کاربر (EUID) از آپشن -u استفاده کنید.

کد PHP:

$ ps -fu tecmint
OR
$ ps -fu ۱۰۰۰  

نمانیش تمام Process های در حال اجرای یوزر Root (توسط ID)

۸ – دستور زیر هر Process ی که توسط یوزر root اجرا شده باشد را به فرمت یوزر برای شما نمایش خواهد داد.

کد PHP:

$ ps -U root -u root  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 8-Display-Running-Processes-of-Root-User.png مشاهده: 1 حجم: 5.6 کیلو بایت

نمایش Process های متعلق به یک گروه

۹ – اگر شما بخواهید تمام پروسس هایی که به گروه خاصی متعلق هستند (ID واقعی گروه (RGID) یا نام گروه) را لیست کنید از دستور زیر استفاده نمایید.

کد PHP:

$ ps -fG apache
OR
$ ps -fG ۴۸  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 9-Display-Group-Processes.png مشاهده: 1 حجم: 14.8 کیلو بایت

۱۰ – برای لیست کردن تمام پروسس ها براساس نام گروهی که پروسس به آن تعلق دارد (یا session) از دستور زیر استفاده میکنیم.

کد PHP:

$ ps -fg apache  

نمایش Process ها از طریق PID و PPID

۱۱ – شما میتوانید پروسس ها را با استفاده از PID شبیه به زیر لیست کنید.

کد PHP:

$ ps -fp ۱۱۷۸  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 11-List-Processes-by-PID.png مشاهده: 1 حجم: 5.2 کیلو بایت

۱۲ – برای انتخاب کردن پروسس با استفاده از PPID دستور زیر را تایپ کنید.

کد PHP:

$ ps -f --ppid ۱۱۵۴  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 12-List-Process-by-PPID.png مشاهده: 1 حجم: 5.2 کیلو بایت

۱۳ – با استفاده از دستور زیر و با استفاده از لیست PID پروسس را نمایش دهید.

کد PHP:

$ ps -fp ۲۲۲۶,۱۱۵۴,۱۱۴۶  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 13-List-Processes-by-PIDs.png مشاهده: 1 حجم: 6.8 کیلو بایت

نمایش Process ها با استفاده از TTY

۱۴ – برای انتخاب پروسس ها با استفاده از tty از آپشن -t همانند زیر استفاده کنید.

کد PHP:

$ ps -t pst/0
$ ps -t pst/1
$ ps -ft tty1  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 14-List-Processes-by-TTY.png مشاهده: 1 حجم: 9.3 کیلو بایت

نمایش درختی پروسس ها (Process Tree)

۱۵ – یک درخت پروسس نمایش میدهد که چگونه پروسس های روی سیستم به یکدیگر لینک شده اند، همچنین پروسس هایی که parent آنها kill شده اند توسط init (یا systemd) سرپرستی میشوند.

کد PHP:

$ ps -e --forest  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 15-List-Process-Tree.png مشاهده: 1 حجم: 9.7 کیلو بایت

۱۶ – شما همچنین میتوانید یک درخت پروسس (Process Tree) را تنها برای یک پروسس مشخص نمایش دهید.

کد PHP:

$ ps -f --forest -C sshd
OR
$ ps -ef --forest | grep -v grep | grep sshd  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 16-List-Tree-View-of-Process.png مشاهده: 1 حجم: 12.6 کیلو بایت

نمایش Process Thread ها

۱۷ – برای نمایش تمام thread های یک پروسس از آپشن -H استفاده میکنیم، این آپشن ستون LWP (مخفف Light Weight Process یا پروسس های سبک) و NLWP (مخفف Number of Light Weight Process – تعداد پروسس های سبک) را نمایش خواهد داد.

کد PHP:

$ ps -fL -C httpd  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 17-List-Process-Threads.png مشاهده: 1 حجم: 8.4 کیلو بایت

مشخص کردن فرمت خروجی دلخواه

با استفاده از -o یا -format دستور ps به شما این امکان را میدهد که فرمت خروجی تعریف شده توسط کاربر خود را همانند تصویر زیر داشته باشید.

۱۸ – برای لیست کردن همه موارد مشخص کننده فرمت از آپشن L استفاده میکنیم.

کد PHP:

$ ps L  

۱۹ – دستور زیر به شما امکان نمایش PIDPPID، نام کاربر و دستور مربوط به یک پروسس را میدهد.

کد PHP:

$ ps -eo pid,ppid,user,cmd  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 19-List-Processes-with-Names.png مشاهده: 1 حجم: 13.5 کیلو بایت

۲۰ – دستور زیر مثال دیگری از فرمت خروجی دلخواه میباشد که گروه فایل سیستم، مقدار Nice، زمان شروع و زمان سپری شده از یک پروسس را نمایش میدهد.

کد PHP:

$ ps -p ۱۱۵۴ -o pid,ppid,fgroup,ni,lstart,etime  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 20-List-Process-ID-Information.png مشاهده: 1 حجم: 4.8 کیلو بایت

۲۱ – برای پیدا کردن نام یک پروسس با استفاده از PID آن از دستور زیر استفاده کنید.

کد PHP:

$ ps -p ۱۱۵۴ -o comm=  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 21-Find-Process-using-PID.png مشاهده: 1 حجم: 2.6 کیلو بایت

نمایش پروسس های Parent و Child

۲۲ – برای انتخاب یک پروسس مشخص با استفاده از نام آن از آپشن -C استفاده میشود که این آپشن همچنین تمام پروسس های child پروسس اصلی را نیز نمایش خواهد داد.

کد PHP:

$ ps -C sshd  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 22-Find-Parent-Child-Process.png مشاهده: 1 حجم: 6.0 کیلو بایت

۲۳ – پیدا کردن تمام PID های همه نمونه های یک پروسس به هنگام نوشتن اسکریپت هایی که نیاز به خواندن PID ها از یک خروجی استاندارد یا یک فایل دارند امری بسیار مفید است که با استفاده از دستور زیر میتوانیم به این هدف دست پیدا کنیم.

کد PHP:

$ ps -C httpd -o pid=  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 23-Find-All-Process-PIDs.png مشاهده: 1 حجم: 10.7 کیلو بایت

۲۴ – برای بررسی کردن execution time (مدت زمان اجرا) مربوط به یک پروسس از دستور زیر استفاده میکنیم.

کد PHP:

$ ps -eo comm,etime,user | grep httpd  

خروجی زیر نمایش میدهد که سرویس HTTPD به مدت ۱ ساعت و ۴۸ دقیقه و ۱۷ ثانیه میباشد که در حال اجراست.

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 24-Find-Process-Uptime.png مشاهده: 1 حجم: 13.6 کیلو بایت

Troubleshoot کردن کارایی سیستم لینوکس

اگر سیستم شما آنطور که باید کار نمیکند برای مثال اگر به صورت غیر طبیعی کند است شما میتوانید یک سری ترابل شوت ها روی سیستم همانند زیر انجام دهید.

۲۶ – پیدا کردن پروسس های در حال اجرا بر اساسمصرف بالای CPU و Memory در لینوکس از دستور زیر استفاده میکنیم.

کد PHP:

$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
OR
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 26-Find-Top-Running-Processes.png مشاهده: 1 حجم: 40.0 کیلو بایت

۲۷ – برای kill کردن یک پروسس لینوکسی یا اپلیکیشن های بی مسئولیت (Unresponsive) و یا هر پروسسی که در حال مصرف بالایی از CPU است، ابتدا باید PID پروسس یا اپلیکیشن را با استفاده از دستور زیر پیدا کنید،

کد PHP:

$ ps -A | grep -i stress  

سپس از دستور kill برای خاتمه دادن سریع به آن استفاده میکنیم.

کد PHP:

$ kill -۹ ۲۵۸۳ ۲۵۸۴  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 27-Find-Kill-a-Process.png مشاهده: 1 حجم: 12.3 کیلو بایت

نمایش اطلاعات امنیتی 

۲۸ – برای نمایش بخش امنیتی (خصوصا برای SELinux) شبیه به زیر عمل میکنیم.

کد PHP:

$ ps -eM
OR
$ ps -e --context  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 28-Find-SELinux-Context.png مشاهده: 1 حجم: 7.4 کیلو بایت

۲۹ – شما همچنین میتوانید اطلاعات امنیتی را به فرمت مورد نظر کاربر با استفاده از دستور زیر نمایش دهید.

کد PHP:

$ ps -eo  euser,ruser,suser,fuser,f,comm,label  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 29-List-SELinux-Context-by-Users.png مشاهده: 1 حجم: 26.5 کیلو بایت

مانیتورینگ realtime (لحظه ای) پروسس ها با استفاده از ابزار watch

۳۰ – نهایتا از آنجایی که دستور ps اطلاعات ثابتی را به شما نمایش میدهد شما میتوانید از ابزار watch برای مانیتورینگ لحظه ای پروسس با خروجی های مکرر استفاده کنیم که بعد از هر ثانیه خروجی نمایش خواهد داد همانند دستور زیر که یک دستور دلخواه ps را به منظور هدف مورد نظر مشخص کرده است.

کد PHP:

$ watch -n ۱ 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'  

برای دیدن سایز بزرگ روی عکس کلیک کنید نام: 30-Real-Time-Processes-Monitoring.png مشاهده: 1 حجم: 46.9 کیلو بایت

 

نکته : ps تنها اطلاعات ثابت را نمایش میدهد برای نمایش مکرر خروجی آپدیت شده شما میتوانید از ابزارهایی همانند htop, top و glances استفاده کنید. دو مورد آخر در حقیقت ابزارهای مانیتورینگ performace سیستم لینوکسی میباشند.

 

 

با نتورک کار همراه باشید

جدیدترین مطالب آموزشی را در کانال تلگرام نتورک کار دنبال کنید

 

مهدی سلیمانی

مطالب مرتبط

دیدگاه ها

دیدگاه کاربران انتشار یافته : ۰ - در انتظار بررسی :
    • دیدگاه ارسال شده توسط شما ، پس از تایید توسط مدیران سایت منتشر خواهد شد.
    • دیدگاهی که به غیر از زبان فارسی یا غیر مرتبط با مطلب باشد منتشر نخواهد شد.