linux上程序有5種狀態:
1. 執行(正在執行或在執行佇列中等待)
2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到訊號)
3. 不可中斷(收到訊號不喚醒和不可執行, 程序必須等待直到有中斷發生)
4. 僵死(程序已終止, 但程序描述符存在, 直到父程序呼叫wait4()系統呼叫後釋放)
5. 停止(程序收到sigstop, sigstp, sigtin, sigtou訊號後停止執行執行)
ps工具標識程序的5種狀態碼:
d 不可中斷 uninterruptible sleep (usually io)
r 執行 runnable (on run queue)
s 中斷 sleeping
t 停止 traced or stopped
z 僵死 a defunct ("zombie") process
注: 其它狀態還包括w(無駐留頁), <(高優先順序程序), n(低優先順序程序), l(記憶體鎖頁).
可以用下面命令檢視程序狀態
ps -aux
列出類似程式樹的程式顯示(顯示程序下有哪些子程序)
ps -axjf
找出與 cron 與 syslog 這兩個服務有關的 pid 號碼
ps aux | egrep '(cron|syslog)'
也可以這樣使用ps格式輸出來檢視程序狀態:
ps -eo user,stat..,cmd
user 使用者名稱
uid 使用者號
pid 程序號
ppid 父程序號
size 記憶體大小, kbytes位元組.
vsize 總虛擬記憶體大小, bytes位元組(包含code+data+stack)
share 總共享頁數
nice 程序優先順序(預設為0, 最大為-20)
priority(pri) 核心排程優先順序
pmem 程序分享的物理記憶體數的百分比
trs 程式執行**駐留大小
rss 程序使用的總物理記憶體數, kbytes位元組
time 程序執行起到現在總的cpu暫用時間
stat 程序狀態
cmd(args) 執行命令的簡單格式
例子:
檢視當前系統程序的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
在linux下,還有一種方法檢查某個程序是否存在:利用/proc檔案系統. /proc/pid/stat裡面有程序的狀態,程序可執行檔名等.如果該檔案不存在了,那程序肯定退出了.如果存在,可以檢查狀態和檔名是否正確.效率可能比ps還是高一些,因為/proc是虛擬檔案系統,存在與記憶體中.
如何利用/proc檔案系統
cat /proc/pid/status
這裡pid是你的程序id,看看輸出結果,有一欄是state
你要利用/proc檔案系統時,int fd = open( "/proc/pid/status", o_rdonly );
這裡pid是實際的程序的pid,如果open失敗,剛程序顯然不存在,然後讀取該檔案的內容,找出state
linux程序狀態查詢
linux上程序有5種狀態 1.執行 正在執行或在執行佇列中等待 2.中斷 休眠中,受阻,在等待某個條件的形成或接受到訊號 3.不可中斷 收到訊號不喚醒和不可執行,程序必須等待直到有中斷發生 4.僵死 程序已終止,但程序描述符存在,直到父程序呼叫wait4 系統呼叫後釋放 5.停止 程序收到sigs...
linux上程序狀態查詢
linux上程序有5種狀態 1.執行 正在執行或在執行佇列中等待 2.中斷 休眠中,受阻,在等待某個條件的形成或接受到訊號 3.不可中斷 收到訊號不喚醒和不可執行,程序必須等待直到有中斷發生 4.僵死 程序已終止,但程序描述符存在,直到父程序呼叫wait4 系統呼叫後釋放 5.停止 程序收到sigs...
linux上程序狀態查詢
linux上程序有5種狀態 1.執行 正在執行或在執行佇列中等待 2.中斷 休眠中,受阻,在等待某個條件的形成或接受到訊號 3.不可中斷 收到訊號不喚醒和不可執行,程序必須等待直到有中斷發生 4.僵死 程序已終止,但程序描述符存在,直到父程序呼叫wait4 系統呼叫後釋放 5.停止 程序收到sigs...