了解長時間執行程序的 ps 已用時間格式
我在
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時間?)