所以我正在尝试开发一个脚本,它将找到特定的进程,并杀死一直运行时间最长的脚本。试图按照经过的时间对命令进行排序已成为问题。这里是我正在运行的命令,我知道有很多|并可能更干净为什么要这样做,但我对使用awk相当陌生。按etime排序PS命令
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'输出的顺序,所以这是你需要命令的命令。另外,你不需要在管道中使用grep + 2 awk命令,原始的'ps ...'输出以及你想要从脚本中获得的相应的最终输出。 –
由于sort -k5n同意,所以显然在数字上对“数字”的定义进行了排序。尽管没有前导空格(如果单独使用该列)'sort -n'会给你一个不同的顺序。在该字段上的非数字“排序”可以将00:40,03:21:39,1-21:44:39,1-21:45:39,3-15:02:37作为输出排序。 –