这些是可能的输出格式ps h -eo etime
21-18:26:30
15:28:37
48:14
00:01
如何将它们解析为秒?
- 请假设天数部分至少为 3 位数字,因为我不知道它可以有多长。
- 输出将是
egreped
仅一行,因此无需循环。
另一种 bash 解决方案,适用于任意数量的字段:
ps -p $pid -oetime= | tr '-' ':' | awk -F: '{ total=0; m=1; } { for (i=0; i < NF; i++) {total += $(NF-i)*m; m *= i >= 2 ? 24 : 60 }} {print total}'
解释:
- replace
-
to :
这样字符串就变成了1:2:3:4
代替
'1-2:3:4',将总计设置为 0,将乘数设置为 1
- 分割为 :,从最后一个字段(秒)开始,乘以 m = 1,添加到总秒数,m 变为 60(一分钟中的秒数)
- 添加分钟字段乘以 60,m 变为 3600
- 添加小时数 * 3600
- 添加天数 * 3600 * 24
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)