linux的ps命令是一個查看系統運行的進程的一個最基礎的工具。它提供了一個當前進程的快照,還帶有一些具體的信息,比如用戶id,cpu使用率,內存使用,命令名等,它不會像top或者htop一樣實時顯示數據。雖然它在功能和輸出上更加簡單,但它仍然是每個linux新手需要了解和學好的必要進程管理/檢測工具。
在本篇中,我們會學習ps命令基本的用法:查找、過濾,以不同的方式排序。
ps命令有兩種不同風格的語法規則:BSD風格和UNIX風格。Linux新手經常感到困惑並會誤解這兩種風格,所以在繼續下一步之前,我們來弄清楚一些基本的信息。
注意: "ps aux"不等同於"ps -aux"。比如"-u"用於顯示用戶的進程,但是"u"意味著顯示具體信息。
BSD 形式 - BSD形式的語法的選項前沒有破折號,如:
ps aux
UNIX/LINUX 形式 - linux形式的語法的選項前有破折號,如:
ps -ef
在linux系統上混合這兩種語法是可以的。比如 "ps ax -f"。但是本章中我們主要討論UNIX形式語法。
下面的命令可以顯示所有進程的列表。
$ ps ax $ ps -ef
通過管道輸出到"less"可以分頁。
使用"u"或者"-f"選項可以顯示進程的具體信息。
$ ps aux $ ps -ef -f
為什麼USER列顯示的不是我的用戶名,但是其他的像root,www-data等卻顯示? 對於所有的用戶(包括你們的),如果長度大於8個字符,那麼ps只會顯示你的UID而不是用戶名。
使用"-u"選項後跟用戶名來過濾所屬用戶的進程。多個用戶名可以用逗號分隔。
$ ps -f -u www-data UID PID PPID C STIME TTY TIME CMD www-data 1329 1328 0 09:32 ? 00:00:00 nginx: worker process www-data 1330 1328 0 09:32 ? 00:00:00 nginx: worker process www-data 1332 1328 0 09:32 ? 00:00:00 nginx: worker process www-data 1377 1372 0 09:32 ? 00:00:00 php-fpm: pool a.localhost www-data 1378 1372 0 09:32 ? 00:00:00 php-fpm: pool a.localhost www-data 4524 2359 0 10:03 ? 00:00:00 /usr/sbin/apache2 -k start www-data 4527 2359 0 10:03 ? 00:00:00 /usr/sbin/apache2 -k start www-data 4528 2359 0 10:03 ? 00:00:00 /usr/sbin/apache2 -k start
通過"-C"選項後面加上名字或者命令來搜索進程。
$ ps -C apache2 PID TTY TIME CMD 2359 ? 00:00:00 apache2 4524 ? 00:00:00 apache2 4525 ? 00:00:00 apache2 ...
要通過進程id顯示進程,就使用"-p"選項,並且還可以通過逗號分隔來指定多個進程id。
$ ps -f -p 3150,7298,6544
"-C"必須提供精確的進程名,並且它並不能通過部分名字或者通配符查找。為了更靈活地搜索進程列表,通常使用grep命令。
$ ps -ef | grep apache
系統管理員通常想要找出那些消耗最多內存或者CPU的進程。排序選項會基於特定的字段或者參數來排序進程列表。
可以用'--sort'指定多個字段,並用逗號分割。除此之外,字段前面還可以跟上'-'或者'+'的前綴來相應地表示遞減和遞增排序。這裡有很多的用於排序的選項,通過man頁來獲取完整的列表。
$ ps aux --sort=-pcpu,+pmem
顯示前5名最耗cpu的進程。
$ ps aux --sort=-pcpu | head -5 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 2.6 0.7 51396 7644 ? Ss 02:02 0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 23 root 1249 2.6 3.0 355800 30896 tty1 Rsl+ 02:02 0:02 /usr/bin/X -background none :0 vt01 -nolisten tcp root 508 2.4 1.6 248488 16776 ? Ss 02:02 0:03 /usr/bin/python /usr/sbin/firewalld --nofork silver 1525 2.1 2.3 448568 24392 ? S 02:03 0:01 /usr/bin/python /usr/share/system-config-printer/applet.py
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2013-12/93799p2.htm
推薦閱讀:
Linux流量監控工具 – iftop http://www.linuxidc.com/Linux/2013-08/89102.htm
Linux top 命令詳解 http://www.linuxidc.com/Linux/2013-06/85626.htm
Linux下top命令 http://www.linuxidc.com/Linux/2013-04/83151.htm
Linux下高效的使用 top 命令 http://www.linuxidc.com/Linux/2013-04/82676.htm
Linux系統top命令詳解 http://www.linuxidc.com/Linux/2012-12/76750.htm
Linux 系統監控負載top命令詳解 http://www.linuxidc.com/Linux/2012-10/72756.htm