如何建立一個看門狗腳本來暫停和繼續進程,以防其他佔用大量 CPU 的進程正在運行?

如何建立一個看門狗腳本來暫停和繼續進程,以防其他佔用大量 CPU 的進程正在運行?

我有一個非常大的測試設置,在我大學的許多團體使用的伺服器上運行了幾天。

我想透過 pid 暫停進程(以及進程執行的進程(如果當前有進程正在運行),並在 cpu 密集型進程停止時繼續。當 cpu 密集型進程停止時,我會認為 cpu 密集型進程是相關的至少一個核心以100% 運行超過15 秒。

(我不太確定如何解釋「top」輸出,但經常會出現cpu 使用率為2300% 的進程,我將其解釋為23 個核心以100% 運行,或22 個核心以(100%-x%) *22=2300% 運行ETC。

要暫停進程,我必須在兩個 bash 指令之間進行選擇:

kill -TSTP [pid]

kill -STOP [pid]

要繼續該過程,我將使用:

kill -CONT [pid]

自從我的蟒蛇腳本在測試設定中執行確實由其執行的進程的運行時測量我想請問有沒有辦法僅測量進程運行時的時間? (我還透過 python 腳本執行的進程的內建函數來測量精確的計算時間,但由於一些有問題的結果(絕對時間有問題,相對時間似乎是正確的),我也會有一個不太精確但至少可以從外部進行一些可用的時間測量(python 腳本))

概括

  1. 我如何設計一個腳本來找到這些進程並做出相應的反應? (伺服器上沒有根用戶,但我可以查看所有執行的進程並處理我自己的進程)
  2. 如何對那些不包括進程暫停時間的進程進行準確的時間測量(+/- 10 秒)?

相關內容