了解长时间运行的进程的 ps 经过时间格式

了解长时间运行的进程的 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 旁边的单位是什么?

答案1

根据标准:

在 POSIX 语言环境中,自进程启动以来所经过的时间,格式为:

[[dd-]hh:]mm:ss

其中dd代表天数,hh代表小时数,mm代表分钟数,ss代表秒数。 dd 字段应为十进制整数。 hh、mm 和 ss 字段应为两位十进制整数,左侧补零。

所以,不管你信不信,9 意味着天。您是否会误解 htop 的输出? top(时间格式为minutes:seconds)说什么?您确定您在 htop 中查看的字段相当于 etime 吗? (例如,这是否意味着 126分钟中央处理器时间?)

相关内容