2011-05-16 70 views

回答

4

您可以從其/ proc目錄(/proc/<PID>)中找到有關進程的信息。

open(os.path.join('/proc', str(pid), 'stat')).readline().split()[2]=='T' 

編輯:這一次算式修正了原來的一個(可能是罕見的)錯誤:

re.sub(r'\(.*\)', '()', open(os.path.join('/proc', str(pid), 'stat')).readline()).split()[2]=='T' 
+0

不使用os.path.join!...等等,這是純粹的linux問題。 – janislaw 2011-08-04 13:46:01

+0

@janislaw - 謝謝。 – 2011-08-04 15:35:57

4

調用ps並檢查STAT值。 D不間斷睡眠(通常爲IO) R正在運行或可運行(在運行隊列中) S可中斷睡眠(等待事件完成) T由作業控制信號或因爲正在跟蹤而停止。 W分頁(自2.6.xx內核以來無效) X dead(永遠不會看到) Z已停止(「殭屍」)進程已終止但未由其父節點收回。

+0

謝謝你,我使用ps axo fname,stat,pid,並且就像你說的那樣工作,我不知道STAT值是爲了那個。 – CobraBytez 2011-05-16 18:42:43

2

您可以使用psuti升:具體來說,你可以用這個Python表達式查找其運行狀態

>>> import psutil 
>>> pid = 1243 
>>> p = psutil.Process(pid) 
>>> p.status 
0 
>>> str(p.status) 
'running' 
>>> p.status == psutil.STATUS_RUNNING 
True 
>>> 
>>> p.suspend() 
>>> p.status 
3 
>>> str(p.status) 
'stopped' 
>>> p.status == psutil.STATUS_STOPPED 
True 
>>> 
>>> p.resume() 
>>> str(p.status) 
'running' 
>>> 
相關問題