因此,我正在尝试开发一种脚本,以查找特定的进程,并杀死运行时间最长的脚本。试图使命令按经过时间排序正成为问题。这是我正在运行的命令,我知道有很多|也许更清洁,为什么要执行所有这些操作,但是我对使用awk还是比较陌生。
ps -eo pid,cmd,stat,etime --sort=etime | grep cassi32 | awk '$3 == "/rESTECH"' | awk '$4 == "S"'
我得到的输出是这个。
5703 cassi32 /rESTECH S 00:40
65504 cassi32 /rESTECH S 1-21:45:39
65520 cassi32 /rESTECH S 03:21:39
65521 cassi32 /rESTECH S 3-15:02:37
65531 cassi32 /rESTECH S 1-21:44:39
如您所见,etime列似乎没有以任何特定顺序排列,而是按PID排序。
关于如何按etime排序的任何想法。一旦完成,我就可以照顾杀死部分。
最佳答案
您拥有的ps
版本(以及我正在测试的版本)似乎在对某些基于时间的键子集进行正确排序时出现问题。不过,这似乎可以满足您的要求:
ps -eo pid,cmd,stat,etime --sort start_time | awk '$2 == "cassi32" && $3 == "/rESTECH" && $4 == "S"'
至少在我的系统上,按
start_time
排序似乎更可靠,并且与etime
或经过时间直接相关。