我正在使用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 是什么单位?
Ran*_*832 17
根据标准:
在 POSIX 语言环境中,自进程启动以来经过的时间,格式为:
Run Code Online (Sandbox Code Playgroud)[[dd-]hh:]mm:ss其中 dd 表示天数,hh 表示小时数,mm 表示分钟数,ss 表示秒数。dd 字段应为十进制整数。hh、mm 和 ss 字段应为两位十进制整数,在左侧用零填充。
所以,9 意味着天,不管你信不信。你会误解 htop 的输出吗?top(时间格式为minutes:seconds)是什么意思?您确定您在 htop 中查看的字段等同于 etime 吗?(例如,这是否意味着 126分钟的CPU时间?)