檢視程序狀態
在linux常用以下兩個命令檢視程序狀態:
ps -ef
ps aux
這兩個命令都可以列出所有程序及其狀態,具體各命令的含義可以參考man手冊。
下文以使用ps aux
為例,會列出user pid %cpu %mem vsz rss tty stat start time command
各列。
本文主要**列出的資訊中的stat
列,它表示的是當前程序的狀態。
程序狀態
程序的狀態可能是r(task_running)、s(task_interruptible)、d(task_uninterruptible)、t(task_stopped/task_traced)、z(task_dead/exit_zombie)、x(task_dead/exit_dead)
,具體如下:
s: 可中斷的睡眠狀態。
d: 不可中斷的睡眠狀態。
t: 暫停狀態或跟蹤狀態。
z: 退出狀態,程序成為殭屍程序。
x: 退出狀態,程序即將被銷毀。
程序狀態的變遷
程序是通過fork系列的系統呼叫(fork、clone、vfork)來建立的,核心(或核心模組)也可以通過kernel_thread函式建立核心程序。
這些建立子程序的函式本質上都完成了相同的功能——將呼叫程序複製乙份,得到子程序。(可以通過選項引數來決定各種資源是共享、還是私有。)
儘管程序狀態有好幾種,但是程序狀態的變遷卻只有兩個方向:
具體來說:
小結檢視程序狀態是除錯linux程式的必備技能,一般情況下,程序狀態會是前三種情況。
在程式除錯中,處於z狀態的程式也不少見,通過檢視程序狀態,方便定位問題。
參考資料
linux程序狀態解析 之 r、s、d、t、z、x (主要有三個狀態)
Linux ps命令檢視程序狀態
ps 命令是最常用的監控程序的命令,通過此命令可以檢視系統中所有執行程序的詳細資訊。ps 命令的基本格式如下 root localhost ps aux 檢視系統中所有的程序,使用 bs 作業系統格式 root localhost ps le 檢視系統中所有的程序,使用 linux 標準命令格式選項...
Linux ps程序狀態碼
d 不可中斷睡眠 通常程序在進行i o r 執行中或者可執行狀態 在執行佇列中 s 可中斷睡眠 等待event,程序idle中 t 程序停止 程序被trace或者程序被訊號停止 x 程序死亡 應該永不可見 z 殭屍程序 結束,但是父程序沒有wait該子程序 對於bsd格式,狀態碼可以附加額外的字元 ...
linux ps 檢視程序狀態
ps 引數 linux中的ps命令是process status的縮寫。ps命令用來列出系統中當前執行的那些程序。ps命令列出的是當前那些程序的快照,就是執行ps命令的那個時刻的那些程序,如果想要動態的顯示程序資訊,就可以使用top命令。要對程序進行監測和控制,首先必須要了解當前程序的情況,也就是需...