我试图在linux服务器上找到进程的运行时间。我使用etime
来实现这一目标。这是我正在使用的代码
ps -eo etime,args | grep "process"|awk '{print $1}'
此
的示例输出28-08:42:13
我正在执行以下操作将此转换为秒并在运行时少于30 mins(1800 secs)
ps -eo etime,args | grep "process"|awk '{print $1}'|awk -F'[-: ]+' '/:/ {t=$2+60*$1; print t}'
我看到的问题是,当转换为秒时,它从运行时间中获取$ 2(秒)和$ 1(分钟)并向我发送邮件,即使该过程已经为{{{ 1}}。 有没有更好的方法将运行时转换为秒?对于运行时间少于1小时的情况,使用第一个输出中的$ 3和$ 4不起作用。它选择垃圾值并返回与实际运行时间不同的值。 请帮忙。
答案 0 :(得分:2)
etime
是人类可读的经过时间。 etimes
是机器可读的经过时间(以秒为单位):
$ ps -o etimes,etime,cmd $$
ELAPSED ELAPSED CMD
515615 5-23:13:35 bash
答案 1 :(得分:0)
我正在使用它并且它有效。
ps -eo etime,args | grep "process"|awk '{print $1}'|awk -F'[-: ]+' '/:/ && NF==5 {t=$5+60*($4+60*($3+24*($2+365*$1))); print t} /:/ && NF==4 {t=$4+60*($3+60*($2+24*$1)); print t} /:/ && NF==3 {t=$3+60*($2+60*$1); print t} /:/ && NF==2 {t=$2+60*$1; print t}'