Command
是否有 Unix 類型的命令可以殺死具有特定名稱的所有程序?
我為 Ruby on Rails 應用程序執行了一個名為“delayed_job”的腳本。其中一個選項是使用單獨的監視器 proc 執行此 proc。當主程序死亡時,監視器將產生一個新程序。我還可以執行多個程序。每個都有自己的關聯監控程序。
該腳本提供了一種殺死主要程序而不是監視程序的方法。我想殺了他們所有人。
一個命令:
ps -ef|grep delayed
產量:
42011 29423 1 0 Sep25 ? 00:00:02 delayed_job.0_monitor 42011 29428 1 0 Sep25 ? 00:00:02 delayed_job.1_monitor 42011 29434 1 0 Sep25 ? 00:00:02 delayed_job.2_monitor 42011 29437 1 0 Sep25 ? 00:00:01 delayed_job.3_monitor 42011 23359 1 10 Oct19 ? 03:12:49 delayed_job.0 42011 8607 1 5 Oct19 ? 00:58:42 delayed_job.3 42011 21442 1 44 12:31 ? 01:02:03 delayed_job.2 42011 23092 1 4 14:18 ? 00:01:22 delayed_job.1 42011 23861 23763 0 14:51 pts/5 00:00:00 grep delayed
我想殺了他們所有人,或者至少是監視器。我怎樣才能殺死這些(grep 命令本身除外)?
http://www.tech-recipes.com/rx/742/kill-the-undesired-unix-processes-in-one-go/很好地描述了通用 unix 的常見答案:管道 ps 到 grep,然後是 awk,然後是 xargs。
正如另一張海報提到的那樣,請注意任何圍繞“killall”的油嘴滑舌的答案,因為它在 AIX 和 Solaris 上(至少)與在 Linux 上的用途完全不同。在 Solaris 上以 root 身份執行 killall 是“恢復生成事件”。
在上述 pkill 和 killall 答案之外,您可以執行以下操作,假設您要終止程序“foo”
ps -ef | grep [f]oo | awk {'print $1'} | xargs kill
這
grep [f]oo
意味著 grep 不會匹配 grep 命令本身,因此它只會殺死名為“foo”的程序。