1. 簡介
ps 為我們提供了程序的一次性的檢視,它所提供的檢視結果并不動态連續的;如果想對程序時間監控,應該用 top 工具。
2. 指令參數
ps a 顯示現行終端機下的所有程式,包括其他使用者的程式。
ps -A 顯示所有程序。
ps c 列出程式時,顯示每個程式真正的指令名稱,而不包含路徑,參數或常駐服務的标示。
ps -e 此參數的效果和指定"A"參數相同。
ps e 列出程式時,顯示每個程式所使用的環境變量。
ps f 用ASCII字元顯示樹狀結構,表達程式間的互相關系。
ps -H 顯示樹狀結構,表示程式間的互相關系。
ps j 用任務格式來顯示程序;
ps l 長格式輸出;
ps -N 顯示所有的程式,除了執行ps指令終端機下的程式之外。
ps r 顯示運作中的程序;
ps s 采用程式信号的格式顯示程式狀況。
ps S 列出程式時,包括已中斷的子程式資料。
ps -t<終端機編号> 指定終端機編号,并列出屬于該終端機的程式的狀況。
ps u 按使用者名和啟動時間的順序來顯示程序。
ps x 顯示無控制終端的程序。
ps ww 避免詳細參數被截斷;
最常用的方法是ps -aux,然後再利用一個管道符号導向到grep去查找特定的程序,然後再對特定的程序進行操作。
我們常用的選項是組合是 aux 或 lax,還有參數 f 的應用。
3. 輸出說明
運作 ps aux 的到如下資訊:
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
smmsp 3521 0.0 0.7 6556 1616 ? Ss 20:40 0:00 sendmail: Queue runner@01:00:00 f
root 3532 0.0 0.2 2428 452 ? Ss 20:40 0:00 gpm -m /dev/input/mice -t imps2
htt 3563 0.0 0.0 2956 196 ? Ss 20:41 0:00 /usr/sbin/htt -retryonerror 0
htt 3564 0.0 1.7 29460 3704 ? Sl 20:41 0:00 htt_server -nodaemon
root 3574 0.0 0.4 5236 992 ? Ss 20:41 0:00 crond
xfs 3617 0.0 1.3 13572 2804 ? Ss 20:41 0:00 xfs -droppriv -daemon
root 3627 0.0 0.2 3448 552 ? SNs 20:41 0:00 anacron -s
root 3636 0.0 0.1 2304 420 ? Ss 20:41 0:00 /usr/sbin/atd
dbus 3655 0.0 0.5 13840 1084 ? Ssl 20:41 0:00 dbus-daemon-1 --system
Head标頭:
USER 使用者名
UID 使用者ID(User ID)
PID 程序ID(Process ID)
PPID 父程序的程序ID(Parent Process id)
SID 會話ID(Session id)
%CPU 程序的cpu占用率
%MEM 程序的記憶體占用率
VSZ 程序所使用的虛存的大小(Virtual Size)
RSS 程序使用的駐留集大小或者是實際記憶體的大小,Kbytes位元組。
TTY 與程序關聯的終端(tty)
STAT 程序的狀态:程序狀态使用字元表示的(STAT的狀态碼)
R 運作 Runnable (on run queue) 正在運作或在運作隊列中等待。
S 睡眠 Sleeping 休眠中, 受阻, 在等待某個條件的形成或接受到信号。
I 空閑 Idle
Z 僵死 Zombie(a defunct process) 程序已終止, 但程序描述符存在, 直到父程序調用wait4()系統調用後釋放。
D 不可中斷 Uninterruptible sleep (ususally IO) 收到信号不喚醒和不可運作, 程序必須等待直到有中斷發生。
T 終止 Terminate 程序收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号後停止運作運作。
P 等待交換頁
W 無駐留頁 has no resident pages 沒有足夠的記憶體分頁可配置設定。
X 死掉的程序
< 高優先級程序 高優先序的程序
N 低優先 級程序 低優先序的程序
L 記憶體鎖頁 Lock 有記憶體分頁配置設定并縮在記憶體内
s 程序的上司者(在它之下有子程序);
l 多程序的(使用 CLONE_THREAD, 類似 NPTL pthreads)
+ 位于背景的程序組
START 程序啟動時間和日期
TIME 程序使用的總cpu時間
COMMAND 正在執行的指令行指令
NI 優先級(Nice)
PRI 程序優先級編号(Priority)
WCHAN 程序正在睡眠的核心函數名稱;該函數的名稱是從/root/system.map檔案中獲得的。
FLAGS 與程序相關的數字辨別
args 指令參數
4. 示例
檢視目前系統程序的uid,pid,stat,pri, 以uid号排序.
ps -eo pid,stat,pri,uid –sort uid
檢視目前系統程序的user,pid,stat,rss,args, 以rss排序.
ps -eo user,pid,stat,rss,args –sort rss
檢視所有程序詳細展示
ps axHww -o psr,user,pid,ppid,tid,tty,stat,%cpu,%mem,rss,vsz,wchan,args
檢視已經停止的程序
ps -A -ostat,ppid,pid,cmd | grep -e '^[T]'
5. 殺死程序
kill 終止(殺死)程序,有十幾種控制程序的方法,下面是一些常用的方法:
$ kill -STOP [pid]
發送SIGSTOP (17,19,23)停止一個程序,而并不消滅這個程序。
$ kill -CONT [pid]
發送SIGCONT (19,18,25)重新開始一個停止的程序。
$ kill -KILL [pid]
$ kill -9 -1