因此,我正在尝试开发一种脚本,以查找特定的进程,并杀死运行时间最长的脚本。试图使命令按经过时间排序正成为问题。这是我正在运行的命令,我知道有很多|也许更清洁,为什么要执行所有这些操作,但是我对使用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或经过时间直接相关。

10-07 21:43