如何杀死所有同名进程但保留最新的运行?

How to kill all processes of the same name but keep the latest one running?

我见过 this 但我不太明白如何杀死给定名称的所有进程但保留最近的进程 运行.

例如,这将显示 运行 个进程:

$ ps -eo pid,etime,comm | grep maya.bin
23752       10:40 maya.bin
23841       12:04 maya.bin
23891       14:46 maya.bin

不知何故,我需要过滤掉 PID 23752 23841(但不是 23891)并杀死它们。

如果我能弄清楚如何找到那些 PID,大概是通过 awk,我就可以通过例如

杀死
ps -eo pid,etime,comm | awk ??? | kill -9

kill -9 $(ps aux | grep 'maya.bin' | awk ??? )

这可以使用 awk 吗?

如果我没理解错的话,您需要 select 第一个词,然后是除最后一行以外的所有词。你可以用

awk '{ print  }' | head -n -1

总命令将是

kill -9 $(ps aux | grep 'maya.bin' | awk '{ print  }' | head -n -1)