在Linux作業系統中,程序的狀態(Process State)描述了程序在生命週期中的不同階段。以下是一些常見的程序狀態:
-
執行(Running):
- 程序正在使用CPU資源執行指令。
-
等待(Waiting, Uninterruptible Sleep):
- 程序正在等待某些事件發生,比如I/O操作完成、訊號、鎖的釋放等。在這種狀態下,程序不會響應大多數訊號。
-
中斷(Interruptible Sleep):
- 程序正在等待某些條件的滿足,但是可以被訊號中斷。例如,程序可能在等待網路資料,但可以被SIGINT訊號中斷。
-
停止(Stopped):
- 程序被停止執行,通常是因為接收到了SIGSTOP或SIGTSTOP訊號。在這種狀態下,程序不會消耗CPU資源。
-
殭屍(Zombie):
- 程序已經完成執行,但是其父程序尚未讀取其退出狀態。殭屍程序佔用系統資源,但不會執行程式碼。
-
死亡(Dead):
- 程序已經完全終止,所有的資源已經被釋放,但是其退出狀態可能仍然存在於程序表中,直到父程序讀取它。
-
跟蹤/暫停(Traced/Parked):
- 程序被偵錯程式或系統呼叫掛起,等待進一步的指令。
-
可中斷睡眠(D):
- 程序在等待某些條件,但可以被訊號中斷。
-
不可中斷睡眠(D):
- 程序在等待某些條件,但不會對大多數訊號做出響應。
-
暫停(T):
- 程序被暫停執行,通常是因為除錯或系統呼叫。
-
跟蹤/停止(T):
- 程序被偵錯程式掛起,等待進一步的指令。
在Linux中,你可以透過多種方式檢視程序的狀態,例如使用 ps
命令或 /proc
檔案系統。ps
命令的輸出中,程序狀態通常用單個字母表示,例如:
R
表示執行(Running)S
表示可中斷睡眠(Interruptible Sleep)D
表示不可中斷睡眠(Uninterruptible Sleep)Z
表示殭屍(Zombie)T
表示停止(Stopped)
綜上所述,使用 ps
命令時,可以透過新增不同的選項來獲取更詳細的程序狀態資訊。例如,ps aux
會顯示所有程序的詳細資訊,包括它們的PID、使用者、CPU和記憶體使用情況以及狀態。