我有一個python腳本使用SIGSTOP和.SIGCONT命令與os.kill來暫停或恢復一個進程。有沒有辦法確定相關PID是處於暫停還是恢復狀態?有沒有辦法確定Linux PID是否暫停?
7
A
回答
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'
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'
>>>
相關問題
- 1. 有沒有辦法暫停CABasicAnimation?
- 2. 有沒有辦法用spotify api暫停?
- 3. 有沒有辦法暫停/恢復SwingWorker
- 4. 有沒有辦法暫停SKActions?
- 5. 有沒有辦法暫停所有Threading.Timer定時器?
- 6. 是否有使用PId停止和暫停mplayer的命令?
- 7. 有沒有辦法確定Java System.in是否是「交互式」?
- 8. 有沒有辦法確定JDBC事務是否有效?
- 9. 有沒有辦法確定JavaScript函數是否有副作用?
- 10. 有沒有辦法確定Firebase用戶的UID是否有效?
- 11. 有沒有辦法確定stdout是否指向控制檯?
- 12. 有沒有辦法確定輸入流是否只讀?
- 13. 有沒有辦法檢查RenderScrpt是否正確綁定了rs_allocation?
- 14. 有沒有辦法確定Convert.ToDateTime是否添加了年份?
- 15. 有沒有辦法確定neo4j數據庫是否已關閉?
- 16. 有沒有辦法確定頁面是否被壓縮?
- 17. 有沒有辦法確定任務是否被重新分配?
- 18. 有沒有辦法從其他tty暫停gnome?
- 19. 有沒有辦法在腳本中暫停或等待片刻?
- 20. 有沒有辦法告訴節點流(v0.10 +)已暫停?
- 21. 有沒有辦法無限期地暫停一個線程?
- 22. 有沒有辦法直接暫停視圖?
- 23. 有沒有辦法從頁面內惡意暫停Flash電影?
- 24. 有沒有辦法在程序期間暫停OS調度?
- 25. 有沒有辦法在Android中暫停和恢復Animation或AnimationSet?
- 26. 有沒有辦法在C++中暫停OS關機或重啓?
- 27. 有沒有辦法暫停animateWithDuration一旦啓動?
- 28. 有沒有辦法阻止用戶交互暫停動畫?
- 29. 有沒有辦法在暫停狀態下啓動進程?
- 30. 有沒有辦法確定IIS或網站已被停止?
不使用os.path.join!...等等,這是純粹的linux問題。 – janislaw 2011-08-04 13:46:01
@janislaw - 謝謝。 – 2011-08-04 15:35:57