最近在看linux優化大師這本書,第2章祥細講解了分析系統用的工具,這里把一些內容整理出來,以便加深印像。
當進行系統分析時,ps命令顯示有關選擇的活躍進程的信息。ps命令提供當前已存在的進程列表,和top命令相比,ps命令可以靜態方式提供更祥細的信息。
ps有3種不同類型的命令選項:
- UNIX選項,可以組合起來,必須在前面加一個連字符“-”
- BSD選項,可以組合起來,不能使用連字符“-”
- GNU長選項,在前面有2個連字符“--"
以centos為例,見下圖:
ps -ef 可列出所有的進程。
ps aux 這里的PID對進一步操作很重要,如果使用pmap或renice工具,PID的號碼是必需的,使用BSD風格的選項將增加一個進程狀態(stat=STAT)顯示,並顯示命令參數(args=COMMAND)來取代可執行文件的名稱。
使用BSD風格的選項還可以改變進程選擇,包括在其他終端(TTY)中擁有的進程。此外,還可以設置在所有進程中過慮,以排除其他用戶所擁有的進程或沒有在一個終端上的進程。例如:使用用戶自定義的格式查看每個進程:
如果僅顯示sshd則可以鍵入 ps -C sshd:
還可以查看HTTPD進程的ID, ps -C httpd -o pid=
如果要查看線程信息,則可以鍵入:ps aux |grep httpd ps -L pid(進程ID)
最后來邏列一下 ps命令的一些選項參數吧:
一. 進程選擇。
-A |
選擇所有進程 與 -e相同 |
-N |
選擇除滿足指定條件以外的所有進程。(否定選擇)與--deselect相同 |
T |
選擇與該終端相關的所有進程。與不帶任何參數的t選項相同 |
-a |
選擇除session leader 以外的進程和與該終端不相關的所有進程 |
a |
這個選項列出使用該終端(tty)的所有進程,或當與x選項一起使用時列出所有進程 |
-d |
選擇除session leader 以外的所有進程 |
-e |
選擇所有進程,與-A相同 |
r |
限制只選擇正在運行的進程 |
X |
列出所有進程 |
--deselect |
與-N相同 |
二.Ps 命令可以使用這些選項來選擇要顯示的信息。輸出控制如下:
-F |
額外的全格式。參見-f選項 |
-O format |
類似於-o,但是預加載了一些默認列。與-o pid,format,state,tname,time,command或-o pid,format,tname,time,cmd相同,參見-o |
-M |
添加安全性數據列,與Z相同(SELINUX) |
X |
寄存器的格式 |
Z |
與-M相同 |
-c |
為-l選項顯示不同的調度信息 |
-f |
全格式的列表。與-L一起使用時,添加NLWP(線程數量)和LWP(線程ID)列 |
j |
BSD job控制格式。 |
-j |
Job格式 |
l |
顯示BSD長格式 |
-l |
長格式,-y選項通常對此選項有用 |
O format |
指定用戶定義的格式 |
-o format |
用戶定義的格式。 |
s |
顯示信號格式 |
u |
顯示面向用戶的格式 |
v |
顯示虛擬內存格式 |
-y |
不顯示選項;顯示rss地址位,這個選項只能與-l一起使用 |
-Z |
顯示安全上下文格式(selinux) |
--format format |
用戶定義的格式,與-o和o相同 |
--context |
顯示安全上下文格式(selinux) |
三.線程顯示 |
|
H |
顯示線程 |
-L |
顯示線程可能使用LWP NLWP列 |
-T |
顯示線程可能使用SPID列 |
M |
在進程之后顯示線程 |
-m |
在進程之后顯示線程 |
四.進程狀態碼 |
|
D |
不可中斷的睡眠 |
S |
可中斷的睡眠 |
R |
運行中的進程 |
T |
已停止,通過一個job控制信號或因為它正在被跟蹤 |
Z |
已消亡的進程 |
X |
死亡(永遠不會看到) |
W |
分頁 |
< |
高優先級 |
N |
低優先級 |
L |
在內存中鎖定分頁 |
s |
Session leader |
l |
多線程 |
+ |
在前台進程組中 |