【发布时间】:2017-07-18 17:08:49
【问题描述】:
如果我运行这个命令
ps aux | grep -ie ff1 | awk '{print $2 , $9 , $(NF-0)}'
我得到了这个结果:
7019 12:33 /var/www/html/tv1/video1.m3u8
13374 17:13 /var/www/html/tv1/asdas.m3u8
15001 05:58 /var/www/html/tv1/dfwef.m3u8
15021 05:58 /var/www/html/tv1/werwe.m3u8
15200 11:45 /var/www/html/tv1/2fsdfsf.m3u8
所以每行中的第二个单词是进程开始的时间 那么有没有办法我可以用
计算那个时间date +%H:%M - awk '{print $9}'
这样我就可以知道每个进程运行了多少时间
我想要这样的结果:
02:20 7019 12:33 /var/www/html/tv1/video1.m3u8
(表示从 12:33 开始的进程 7019 已经运行了 2 小时 20 分钟)
【问题讨论】:
-
就个人而言,我根本不会使用
ps,而是直接从procfs中提取纪元时间;从当前纪元时间中减去,您就有了运行时的秒数。 -
...当您遇到极端情况时,例如脚本在午夜之后运行且进程在该边界之前启动的情况,纪元时间也相当不容易出现错误。
-
可能需要这样的东西: ps -o etime= -p "PID NUMBER example awk '{print $2 "
-
@arpak:不要使用 awk 来解析输出。使用
ps的-o标志以正确的顺序准确请求所需的字段。