是否有 Unix 类型的命令可以杀死具有特定名称的所有进程?

use*_*055 4 command-line-interface command

我为 Ruby on Rails 应用程序运行了一个名为“delayed_job”的脚本。选项之一是使用单独的监视器 proc 运行此 proc。当主 proc 死亡时,监视器会产生一个新的。我也可以运行多个进程。每个都有自己的关联监控进程。

该脚本提供了一种杀死主进程而不是监视进程的方法。我想杀了他们所有人。

一个命令:

ps -ef|grep delayed
Run Code Online (Sandbox Code Playgroud)

产量:

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
Run Code Online (Sandbox Code Playgroud)

我想杀了他们所有人,或者至少杀了监视器。我怎样才能杀死这些(除了 grep 命令本身)?

Mar*_*ark 5

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 是一个“恢复生成事件”。