我为Ruby on Rails应用程序运行一个名为“delayed_job”的脚本。 其中一个选项是使用单独的监视器进程来运行此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
我想杀死他们,或者至less是监视器。 我怎样才能杀死这些(除了grep命令本身)?
http://www.tech-recipes.com/rx/742/kill-the-undesired-unix-processes-in-one-go/对于通用的unix有一个很好的写法:pipe ps to grep,然后awk,然后到xargs。
作为另一个海报提到,要小心“killall”的任何glib的答案,因为它在AIX和Solaris(至less)有一个完全不同的目的比在Linux上。 在Solaris上以root身份运行killall是一个“简历生成事件”。
除了上面的pkill和killall的答案,你可以做以下的事情,假设你想杀死进程“foo”
ps -ef | grep [f]oo | awk {'print $1'} | xargs kill
grep [f]oo意味着grep将不会与grep命令本身匹配,所以它只会杀死名为“foo”的进程。
如果你正在运行一台linux机器,killall命令似乎是你正在寻找的。
pkill和killall是这个的变种。
# pkill vim # killall vim
两者都在其各自的手册中扩展了文档。