Linux下顯示系統進程的命令ps,最常用的有ps -ef和ps aux,這兩個到底有什么區別呢,討論這個問題,要追溯到Unix系統中的兩個風格,syetem V風格,ps aux最初用到Unix Style中,而ps -ef被用在system V style中,兩者輸出略有不同,現在大部分Linux系統都是可以同時使用這兩種風格的
ps -ef 是用標准的格式顯示進程的,其格式如下
其中各列的內容意思如下
UID 用戶的ID ,但輸出的是用戶名
PID 進程的ID
PPID 父進程的ID
C 進程占用CPU的百分比
STIME 進程啟用到現在的時間
TTY 該進程在哪個終端上運行,若與終端無關,則顯示?,若為pts/0等,則表示由網絡連接主機進程
CMD 命令的名稱和參數
ps aux是用BSD的格式來顯示,其格式如下
其中各列的內容意思如下
USER 用戶名
%CUP 進程占用的CUP百分比
%MEM 占用內存的百分比
VSZ 該進程使用的虛擬內存量(KB)
RSS 該進程占用的固定內存量(KB)(駐留頁中的數量)
STAT 進程的狀態
START 該進程被觸發啟動的時間
TIME 該進程實際使用CUP運行的時間
COMMEND 所執行的命令
STAT轉態常見的狀態字符有
D 無法中斷的休眠狀態
R 正在執行中
S 處於休眠狀態
T 停止或被追蹤
W 進入內存交換(從內核2.6開始無效)
X 死掉的進程(基本很少見)
Z 僵屍進程(不存在但暫時無法消除)
< 優先級高的進程
N 優先級較低的進程
L 有些頁面被鎖進內存
s 進程的領導者(在它之下有子進程)
l 多線程,克隆線程
+ 位於后台的進程組