Process

了解長時間執行程序的 ps 已用時間格式

  • December 8, 2016

我在ps練習中使用命令來辨識執行時間超過給定門檻值的程序。

我正在使用以下模板來獲取已知程序命令的經過時間:

ps -eo etime,command | grep <something to identify a process> | grep -v grep | awk '{print $1}'

我注意到對於短期執行的程序,etime(經過時間)值採用格式minutes:seconds,由此我可以輕鬆確定程序執行了多長時間。

對於執行時間很長(數天)的程序,我不理解格式。

我有一個 MySQL 伺服器程序,htop顯示執行了 126 小時。

執行ps -eo etime,command | grep mysql | grep -v grep | awk '{print $1}'給了我一個值9-03:35:32

我最好的猜測是這意味著 9 點,3 小時,35 分鐘,32 秒。我不知道 9 的單位是什麼。

該過程已執行 126 小時,約 5.25 天。這表明上述輸出中的 9 不代表天數。它們也不能是半天,因為 (9 * 12) 小時 + 3 小時 + 35 分鐘 + 32 秒少於 5 天。

我如何解釋我看到的長時間執行的程序的經過時間值?上述輸出中的 9 伴隨著哪些單位?

根據標準

在 POSIX 語言環境中,自程序啟動以來經過的時間,格式為:

[[dd-]hh:]mm:ss

其中 dd 代表天數,hh 代表小時數,mm 代表分鐘數,ss 代表秒數。dd 欄位應為十進制整數。hh、mm 和 ss 欄位應為左側用零填充的兩位十進制整數。

所以,9 意味著天,不管你信不信。你會誤解 htop 的輸出嗎?top(時間格式為minutes:seconds)說什麼?您確定您在 htop 中查看的欄位等同於 etime 嗎?(例如,這是否意味著 126分鐘CPU時間?)

引用自:https://unix.stackexchange.com/questions/53514