在Linux中,程序狀態有哪些?

黄嘉波發表於2024-06-12

在Linux作業系統中,程序的狀態(Process State)描述了程序在生命週期中的不同階段。以下是一些常見的程序狀態:

  1. 執行(Running)

    • 程序正在使用CPU資源執行指令。
  2. 等待(Waiting, Uninterruptible Sleep)

    • 程序正在等待某些事件發生,比如I/O操作完成、訊號、鎖的釋放等。在這種狀態下,程序不會響應大多數訊號。
  3. 中斷(Interruptible Sleep)

    • 程序正在等待某些條件的滿足,但是可以被訊號中斷。例如,程序可能在等待網路資料,但可以被SIGINT訊號中斷。
  4. 停止(Stopped)

    • 程序被停止執行,通常是因為接收到了SIGSTOP或SIGTSTOP訊號。在這種狀態下,程序不會消耗CPU資源。
  5. 殭屍(Zombie)

    • 程序已經完成執行,但是其父程序尚未讀取其退出狀態。殭屍程序佔用系統資源,但不會執行程式碼。
  6. 死亡(Dead)

    • 程序已經完全終止,所有的資源已經被釋放,但是其退出狀態可能仍然存在於程序表中,直到父程序讀取它。
  7. 跟蹤/暫停(Traced/Parked)

    • 程序被偵錯程式或系統呼叫掛起,等待進一步的指令。
  8. 可中斷睡眠(D)

    • 程序在等待某些條件,但可以被訊號中斷。
  9. 不可中斷睡眠(D)

    • 程序在等待某些條件,但不會對大多數訊號做出響應。
  10. 暫停(T)

    • 程序被暫停執行,通常是因為除錯或系統呼叫。
  11. 跟蹤/停止(T)

    • 程序被偵錯程式掛起,等待進一步的指令。

在Linux中,你可以透過多種方式檢視程序的狀態,例如使用 ps 命令或 /proc 檔案系統。ps 命令的輸出中,程序狀態通常用單個字母表示,例如:

  • R 表示執行(Running)
  • S 表示可中斷睡眠(Interruptible Sleep)
  • D 表示不可中斷睡眠(Uninterruptible Sleep)
  • Z 表示殭屍(Zombie)
  • T 表示停止(Stopped)

綜上所述,使用 ps 命令時,可以透過新增不同的選項來獲取更詳細的程序狀態資訊。例如,ps aux 會顯示所有程序的詳細資訊,包括它們的PID、使用者、CPU和記憶體使用情況以及狀態。

相關文章