歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

Linux系統的進程通常有以下幾種狀態:

R(TASK_RUNNING),可執行狀態。

只有在該狀態的進程才可能在CPU上運行,同一時刻可能有多個進程處於可執行狀態。

S(TASK_INTERRUPTIBLE),可中斷的睡眠狀態。

處於這個狀態的進程因為等待某事件的發生(比如等待socket連接、等待信號量),而被掛起。當這些事件發生時,對應的等待隊列中的一個或多個進程將被喚醒。一般情況下,進程列表中的絕大多數進程都處於TASK_INTERRUPTIBLE狀態。

D(TASK_UNINTERRUPTIBLE),不可中斷的睡眠狀態。

與TASK_INTERRUPTIBLE狀態類似,進程處於睡眠狀態,但是此刻進程是不可中斷的。不可中斷,指的是進程不響應異步信號,無法用kill命令關閉處於TASK_UNINTERRUPTIBLE狀態的進程。

T(TASK_STOPPED or TASK_TRACED),暫停狀態或跟蹤狀態。

向進程發送一個SIGSTOP信號,它就會因響應該信號而進入TASK_STOPPED狀態(除非該進程本身處於TASK_UNINTERRUPTIBLE狀態而不響應信號)。當進程正在被跟蹤時,它處於TASK_TRACED狀態。

Z(TASK_DEAD - EXIT_ZOMBIE),退出狀態。

進程在退出的過程中,處於TASK_DEAD狀態,如果它的父進程沒有收到SIGCHLD信號,故未調用wait(如wait4、waitid)處理函數等待子進程結束,又沒有顯式忽略該信號,它就一直保持EXIT_ZOMBIE狀態。只要父進程不退出,這個EXIT_ZOMBIE狀態的子進程就一直存在。

X(TASK_DEAD - EXIT_DEAD),退出狀態,進程即將被銷毀。

EXIT_DEAD狀態是非常短暫的,幾乎不可能通過ps命令捕捉到

Copyright © Linux教程網 All Rights Reserved