با استفاده از دستور ps امکان مشاهده پروسه های در حال اجرا، منابعی که استفاده می کنند و کاربری که آن را اجرا کرده است مقدور می شود.
دستور ps بصورت پیش فرض اطلاعات کاملی را نمایش نمیدهد اما با استفاده از سوئیچ های مختلف آن اطلاعات جامعی دردسترس خواهد بود.
بعنوان مثال با اجرای دستور ps خروجی بصورت زیر خواهد بود:
PID TTY TIME CMD
14816 pts/8 00:00:00 bash
14826 pts/8 00:00:00 ps
Ps با سوئیچ f برای نمایش بصورت full format استفاده می شود که خروجی های بیشتری را نمایش میدهد، مثال:
UID PID PPID C STIME TTY TIME CMD
ghaland+ 14816 14815 0 11:04 pts/8 00:00:00 -bash
ghaland+ 14830 14816 0 11:04 pts/8 00:00:00 ps -f
-A یا –e جهت نمایش کلیه پروسه ها استفاده می شود .
x برای نمایش پروسههایی که چه از طریق ترمینال و چه از غیر آن اجرا شده باشند، استفاده میشود.
r پروسه های در حال اجرا را نمایش می دهد.
u کاربر اجرا کننده پروسه را نیز نمایش می دهد. بعنوان مثال:
ps -u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
ghaland+ 13860 0.0 0.1 22460 5032 pts/2 Ss 08:32 0:00 -bash
ghaland+ 14816 0.0 0.1 22460 5004 pts/8 Ss 11:04 0:00 -bash
ghaland+ 14835 0.0 0.1 37364 3352 pts/8 R+ 11:14 0:00 ps –u
برای اینکه پروسه های در حال اجرا یک کاربر خاص مشاهده شود ، از دستور ps -u USERNAME می توان استفاده نمود که نام یوزر مورد نظر جایگزین USERNAME می شود بعنوان مثال:
ps -u george
PID TTY TIME CMD
1053 ? 00:00:00 systemd
1062 ? 00:00:00 (sd-pam)
1074 tty1 00:00:00 zsh
...
g برای نمایش پروسه های group استفاده می شود، مثال:
ps -g users
--sort با استفاده از این سوئیچ می توانید خروجی دستور ps را براساس cmd,pid.user,size,uid, … مرتب کنید، مثال:
ps --sort pid
PID TTY TIME CMD
14816 pts/8 00:00:00 bash
15159 pts/8 00:00:00 ps
C با استفاده از این سوئیچ می توان پروسه ها را بر اساس command جستجوکرد.
بعنوان مثال در صورتیکه مروگرchrome در حال اجرا باشد با اجرای ps -C chrome پروسه های مربوط به این برنامه نمایش داده می شود و برای هر tab که باز باشد یک پروسه جدا را نمایش میدهد.
H پروسه ها را بصورت ساختار درختی نمایش می دهد و با استفاده از آن می توان زیر پروسه های هر پروسه را مشاهده نمود. بعنوان مثال:
ps -eH
PID TTY TIME CMD
5735 ? 00:00:07 tmux
5736 pts/2 00:00:00 zsh
12608 pts/2 00:00:08 vim
5763 pts/3 00:00:00 zsh
17185 pts/3 00:00:00 ps
--forest همچنین امکان مشاهده بصورت کد اسکی نیز میسر است
ps -e --forest
PID TTY TIME CMD
5735 ? 00:00:07 tmux
5736 pts/2 00:00:00 \_ zsh
12608 pts/2 00:00:08 | \_ vim
5763 pts/3 00:00:00 \_ zsh
1695 pts/3 00:00:00 \_ ps
جهت مشاهده ۱۰ پروسهای که بیشترین میزان مصرف حافظه را دارند، می توان از دستور زیر استفاده نمود:
ps -auxf | sort -nr -k 4 | head -10
جهت مشاهده ۱۰ پروسهای که بیشترین میزان مصرف cpu را دارند، می توان از دستور زیر استفاده نمود:
ps -auxf | sort -nr -k 3 | head -10
p جهت مشاهده پروسه های در حال اجرا با pid های مورد نظر، بعنوان مثال:
ps -p 12608 3995
PID TTY STAT TIME COMMAND
3995 ? Ss 0:00 st
12608 pts/2 S+ 0:04 vim content/post/unix-ps.md
از طریق روش های زیر می توان شماره پروسه برنامه مورد نظر را بدست آورد، بعنوان مثال:
pgrep mysqld
یا
pidof mysqld
یا
ps aux | grep mysqld
یا
ps -C mysqld -o pid=
o از طریق این سوئیچ می توان ستون هایی که در خروجی قابل نمایش باشد را مشخص نمود،بعنوان مثال جهت نمایش نام پروسهای شماره پروسه آن ۴۴۳۹ باشد، می توان از دستور زیر استفاده نمود.
ps -p 4439 -o comm=
با استفاده از دستور kill نیز می توان پروسه های مورد نظر را متوقف نمود.
Kill pid که شماره پروسه جایگزین pid می شود.
دو مثال در این زمینه :
مثال 1:
sleep 100 &
[1] 21664
kill $(ps -e | grep 'sleep' | awk '{print $1}')
[1] + terminated sleep 100
مثال2:
sleep 100 &
pkill sleep
[1] + terminated sleep 100