5
A
回答
2
我不知道便攜式紅寶石方法來獲取正在運行的進程的進程狀態。你可以做Process.wait
並檢查$?.exitstatus
,但那看起來不像你想要的。對於POSIX的解決方案,你可以使用
`ps -o=state= -p #{pid}`.chomp
以獲取過程狀態的字母代碼ps生成
PROCESS STATE CODES
Here are the different values that the s, stat and state output specifiers
(header "STAT" or "S") will display to describe the state of a process.
D Uninterruptible sleep (usually IO)
R Running or runnable (on run queue)
S Interruptible sleep (waiting for an event to complete)
T Stopped, either by a job control signal or because it is being traced.
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z Defunct ("zombie") process, terminated but not reaped by its parent.
0
在OS X上,我設置的字符串:
outputstring="ps -O=S -p #{mypid}"
然後執行它在%x呼叫中:
termoutput=%x[#{outputstring}]
如果需要,我可以展示這些信息,或者只是保持輸出清晰,並在通話時找到的國家採取行動。
2
我在找同樣的東西。這是一個恥辱ProcessStatus似乎無法從活動pid初始化。如果你想做一個像安全的定時殺死一個子進程的東西,這是至關重要的。
在任何情況下, 它在/proc/$pid/status
第二行,如果你是在Linux上: status_line = File.open("/proc/#{pid}/status") {|f| f.gets; f.gets }
最有可能比涉及外部程序什麼太大快得多。
+0
簡單而優雅的解決方案,以避免依賴外部程序(和脫殼),謝謝。 – Navarro
相關問題
- 1. 通過ssh獲取nohup進程的PID
- 2. 通過PID獲取進程名稱
- 3. 通過PID獲取進程句柄
- 4. 通過Win7中的pid獲取進程信息
- 5. 如何使用pid獲取進程狀態?
- 6. linux - 獲取進程的pid
- 7. 獲取通過ssh使用sudo啓動的進程的PID
- 8. 獲取通過ssh使用nohup啓動的進程的PID
- 9. 從子進程獲取PID
- 10. Ruby Net/SSH exec - 獲取遠程進程的pid
- 11. 在zsh中獲取進程的pid
- 12. 如何獲取/ proc/[pid] /狀態信息
- 13. 通過PID在Erlang中殺死進程
- 14. 如何通過Ruby的Net :: SSH庫獲取退出狀態?
- 15. 使用procf知道進程狀態/ <pid> /狀態
- 16. 在ruby中獲取進程狀態並從進程ID退出代碼
- 17. 如何獲取子進程的PID?
- 18. PHP:獲取特定進程的PID
- 19. ms C++獲取當前進程的pid
- 20. 獲取運行firefox進程的PID
- 21. 獲取遞歸子進程的pid
- 22. 獲取啓動進程的PID C++
- 23. 獲取後臺gnome-terminal進程的pid
- 24. 通過PID窗口查詢進程javascript
- 25. 通過PID查找進程名稱
- 26. 通過Python獲取Jabber狀態
- 27. 通過價值獲取世界狀態
- 28. 通過github API獲取構建狀態
- 29. 從MySql通過PHP + JSON獲取狀態
- 30. 通過MeteorJS獲取HTTP狀態代碼
我相信流程模塊有你需要的東西:http://www.ruby-doc.org/core-1.9.3/Process.html – vlasits
什麼操作系統你需要這個工作? – Phrogz
@vlasits進程模塊沒有任何獲取正在運行的進程狀態的方法,只有已退出的進程。 – dbenhur