如何杀死所有同名进程但保留最新的运行?
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)
我见过 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)