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


10

我在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时间格式。Minutes:seconds是BSD时间格式。Linux ps会根据您通过的选项显示一个或另一个。
吉尔(Gilles)'所以

要仔细检查,请尝试etimes代替etime并比较结果。
罗斯兰

Answers:


16

根据标准

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

[[dd-]hh:]mm:ss

其中dd表示天数,hh表示小时数,mm表示分钟数,而ss表示秒数。dd字段应为十进制整数。hh,mm和ss字段应为两位十进制整数,并在左侧用零填充。

因此,无论您是否相信,这9天都意味着日子。您会误解htop的输出吗?top(时间格式为minutes:seconds)说什么?您确定要在htop中查看的字段等于etime吗?(例如,这是否意味着126 分钟CPU时间?)


感谢您的确认。htop肯定会显示126小时,但是我认为这可能不是墙上时间,而是其他时间(也许是CPU时间)。htop中的字段不等于etime,我在这里错误地假设。
乔恩·克拉姆

1
@JonCram您确定是几个小时吗?原始顶部仅显示分钟(即,分钟数将超过60,而不是小时数),数字126:37表示126分钟37秒。我当时在想htop可能是一样的。9天中126小时的CPU时间似乎很多。
Random832
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.