Linux中是否有任何命令可以通過它來知道進程是否處於掛起狀態。如何檢查進程是否處於掛起狀態(Linux)
回答
'hang state'是什麼意思?通常,無響應並使用100%CPU的進程陷入無限循環。但是there's no way可以確定是否發生了這種情況,或者進程是否最終可能達不到循環退出狀態並繼續運行。
通過嚮應用程序的事件循環發送消息並查看是否有任何響應,桌面掛起檢測器正常工作。如果沒有一定的時間,他們認爲應用程序已經「掛起」......但完全有可能只是在做一些複雜的事情,一旦完成就會立即恢復。無論如何,這不是你可以用於任何任意進程的東西。
不幸的是,一個過程沒有掛起狀態。現在可能會陷入僵局。這是塊狀態。進程中的線程被阻塞。其他的事情可能是進程正在運行的活鎖,但一次又一次地做同樣的事情。此過程處於運行狀態。所以你可以看到沒有明確的掛起狀態。 建議您可以使用top命令查看進程是否使用100%CPU或內存。
在Linux中是否有任何命令可以通過它知道進程是否處於掛起狀態。
沒有命令,但一旦我不得不做一個非常愚蠢的黑客來完成類似的東西。我寫了一個Perl腳本,定期(在我的情況下,每30秒):
- 運行
ps
找到觀看過程中的PID的列表(連同EXEC時間等) - 環比的PID
- 開始
gdb
使用其PID附着到過程中,採用從thread apply all where
它傾倒堆棧跟蹤,從進程分離 - 一個過程被宣佈上吊如果:
- 其堆棧跟蹤並沒有改變,時間3個後檢查沒有改變
- 它的堆棧跟蹤並沒有改變,時間顯示100%的CPU負荷後3個檢查
- 上吊進程已被給予機會一個監視應用程序重新啓動掛起的實例。
但是,這是非常非常非常非常粗劈,做達成關於將要錯過最後期限,這是天數後取出,終於安裝了越野車的應用程序修復之後。如果所有其他響應者都絕對正確地評論過,則無法找到該過程是否被吊死:僅僅因爲掛起可能以多種原因發生,而且往往與應用程序邏輯綁定。
唯一的方法是應用程序本身能夠指示它是否存在或不存在。最簡單的方法可能是例如定期的日誌消息「我還活着」。
雖然每個人都很快就會引用暫停問題,但我喜歡您的響應是以工程爲導向的。儘管我們無法確定任意算術處理過程X **是否會在完成處理之前完成處理,但是我們可以對我們所知道的處理進行限制。解決底層問題最好,但是殺死和重啓一個進程並不像你發現的那樣骯髒:) – Indolering 2013-03-18 13:53:23
,你可以檢查文件
/proc/[pid]/task/[thread ids]/status
- 1. Python守護進程檢查進程是否在Linux中掛起
- 2. 檢查Excel是否處於髒狀態
- 3. PHP檢查JSON以查看它是否處於掛起狀態和/或未掛起
- 4. 如何檢測PHP CLI腳本處於掛起狀態
- 5. 如何檢查手機是否處於閒置狀態或手機是否處於閒置狀態?
- 6. 如何檢查mercurial repo是否處於清潔狀態?
- 7. 如何檢查變送器是否處於活動狀態?
- 8. 如何通過PHP檢查JavaScript是否處於活動狀態?
- 9. 如何檢查CMS塊是否處於活動狀態?
- 10. 如何檢查twitch.tv中的流是否處於打開狀態?
- 11. 如何檢查AmazonS3Client連接是否處於活動狀態
- 12. 如何檢查服務器是否處於活動狀態?(c#)
- 13. PDO:如何檢查連接是否處於活動狀態?
- 14. 承諾處於掛起狀態
- 15. 測試始終處於「掛起」狀態
- 16. 如何檢查Linux線程的狀態?
- 17. 如何確定進程是否處於空閒狀態C
- 18. 檢查特定進程是否處於活動狀態並終止它
- 19. 如何檢測App何時進入/掛起狀態?
- 20. 如何檢查最前面的應用程序是否處於全屏狀態?
- 21. Dropzone.js狀態處於掛起狀態,未上傳文件
- 22. iOS - 在應用程序處於掛起狀態時運行後臺進程
- 23. pod掛起掛起狀態
- 24. 檢測子進程是否掛起父進程
- 25. 檢查進程狀態
- 26. 如何從Runnable檢測Activity是否處於可用狀態?
- 27. 如何檢測QDialog.exec()是否處於活動狀態
- 28. 如何檢測Dispatcher.DisableProcessing是否處於活動狀態?
- 29. 檢查它是否處於活動狀態
- 30. 檢查元素是否處於fadeIn或fadeOut狀態('action')
這是一個superuser.com問題。 – rsilva4 2010-09-07 13:32:55
@ rsilva4或者是一個unix one – OverCoder 2015-08-13 12:43:03
'strace -p $ process_id' - 如果沒有連續的輸出,那意味着它正在等待某件事。如果等待時間過長,您可以考慮「掛斷」。 – 2016-09-16 13:29:17