我已经启动了 50 个进程,在一个文件“说 start_time”中,我存储了进程启动的时间,在另一个文件“说 end_time”中,我存储了进程完成的时间。文件如下 -
Start time -
Start time for Process A : 15/09/26 21:02:13
Start time for Process B : 15/09/26 20:06:14
Start time for Process C : 15/09/26 13:20:52
Start time for Process D : 15/09/26 11:23:46
End time file
End time for Process B : 15/09/26 21:13:38
End time for Process D : 15/09/26 12:31:29
End time for Process A : 15/09/26 22:06:11
End time for Process C : 15/09/26 12:17:10
现在我想计算每个进程的执行时间,例如进程 A:10 分钟进程 B:5 分钟等。
答案1
我同意CAS' 上面的评论涉及正确的日志文件日期,以避免将来重新格式化,如下所示
awk '
/:/{
d=$(NF-1)
gsub("/","",d)
"date +%s -d \""d" "$NF"\"" | getline m
if(/Start/)
D[$5]=-m
else
D[$5]+=m
END{
for(i in D)
print "Process", i, "time :", D[i], "sec"
}' file
要保存进程的结束顺序,只需将脚本的结尾更改为:
… D[$5]=-m
else
print "Process", $5, "time :", D[$5] + m
}' file