有时当我试图启动Firefox时,它会提示“Firefox进程已经在运行”。所以我必须这样做:

jeremy@jeremy-desktop:~$ ps aux | grep firefox
jeremy    7451 25.0 27.4 170536 65680 ?        Sl   22:39   1:18 /usr/lib/firefox-3.0.1/firefox
jeremy    7578  0.0  0.3   3004   768 pts/0    S+   22:44   0:00 grep firefox
jeremy@jeremy-desktop:~$ kill 7451

我想要的是一个能为我做这一切的命令。它将在进程列表中获取一个输入字符串和grep(或其他),并将杀死输出中的所有进程:

jeremy@jeremy-desktop:~$ killbyname firefox

我尝试在PHP中这样做,但exec('ps aux')似乎只显示已在PHP脚本本身的exec()执行的进程(所以它显示的唯一进程是本身)。


当前回答

用grep杀死:

kill -9 `pgrep myprocess`

其他回答

在Mac上,我找不到pgrep和pkill,也没有killall工作,所以写了一个简单的一行脚本:-

export pid=`ps | grep process_name | awk 'NR==1{print $1}' | cut -d' ' -f1`;kill $pid

如果有更简单的方法,请分享。

ps aux | grep processname | cut -d' ' -f7 | xargs kill -9 $

关闭所有在启动路径中有snippet的进程。你可以通过将/directory/作为代码片段来杀死所有从某个目录启动的应用程序。当您从同一个应用程序目录启动同一个应用程序的多个组件时,这是非常有用的。

ps ax | grep <snippet> | grep -v grep | awk '{print $1}' | xargs kill

*如果可用,我更喜欢pgrep

kill -9 $(ps aux | grep -e myprocessname| awk '{ print $2 }')

如果您运行GNOME,您可以使用系统监视器(system ->Administration-> system monitor)像在Windows下一样杀死进程。KDE也有类似的东西。