我怎样才能杀死一个进程的名称,而不是PID?

例如,有时当我尝试启动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 

我想要的是一个能为我做的一切的命令。 它会在进程列表中使用一个inputstring和grep(或其他),并且会终止输出中的所有进程:

 jeremy@jeremy-desktop:~$ killbyname firefox 

我尝试在PHP中执行它,但exec('ps aux')似乎只显示在PHP脚本中使用exec()执行的进程(所以它显示的唯一过程就是它自己)。

 pkill firefox 

更多信息: http : //linux.about.com/library/cmd/blcmdl1_pkill.htm

你可以使用killall <name>来杀死进程

killall向运行任何指定命令的所有进程发送一个信号。 如果没有指定信号名称,则发送SIGTERM。

信号可以通过名称(例如-HUP-SIGHUP )或数字(例如-1 )或选项-s来指定

如果命令名称不是正则expression式(选项-r )且包含斜线(/),则执行该特定文件的进程将被选中以进行查杀,而与其名称无关。

但是,如果你没有看到ps aux的进程,你可能无权杀死它…

也可以使用:

pkill -f "Process name"

对我来说,它是完美的,这正是我所期待的。 在我的情况下,没有标志pkill没有与名称工作。

当设置-f ,完整的命令行用于模式匹配。

稍微长一点的select:

 kill `pidof firefox` 

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

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

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

使用#killall命令:

 #killall -9 <processname> 

最简单的方法是首先检查你是否得到正确的进程ID:

 pgrep -f [part_of_a_command] 

如果结果如预期。 去与:

 pkill -f [part_of_a_command] 

奇怪,但我还没有看到像这样的解决scheme:

 kill -9 `pidof firefox` 

它也可以杀死多个进程(多个pid),如:

 kill -9 `pgrep firefox` 

我更喜欢pidof因为它具有单行输出:

 > pgrep firefox 6316 6565 > pidof firefox 6565 6316 

更正确的是:

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

我通常使用killall命令在这里看到的细节。

用grep杀死:

 kill -9 `pgrep myprocess` 

我问自己同样的问题,但目前的答案的问题是,他们不安全检查进程被杀死,所以…可能导致可怕的错误:)…特别是如果几个进程匹配模式

作为一个声明,我不是一个专业人士,这当然有改进的余地。

所以我写了一个sh脚本:

 #!/bin/sh killables=$(ps aux | grep $1 | grep -v mykill | grep -v grep) if [ ! "${killables}" = "" ] then echo "You are going to kill some process:" echo "${killables}" else echo "No process with the pattern $1 found." return fi echo -n "Is it ok?(Y/N)" read input if [ "$input" = "Y" ] then for pid in $(echo "${killables}" | awk '{print $2}') do echo killing $pid "..." kill $pid echo $pid killed done fi 

默认的kill命令接受命令名称作为PID的替代。 见杀(1) 。 一个经常发生的麻烦是bash提供了自己的kill ,它接受作业号,比如kill %1 ,但不包括命令名。 这阻碍了默认命令。 如果前者的function比后者更有用,则可以通过调用禁用bash版本

enable -n kill

有关更多信息,请参阅bash(1)中的 killenable条目。

如果您运行GNOME,则可以像使用Windows一样使用系统监视器(系统 – >pipe理 – >系统监视器)来终止进程。 KDE会有类似的东西。

杀死所有启动path中有snippet进程。 你可以杀死所有从某个目录开始的应用程序,把/ directory /作为一个片段。 从同一个应用程序目录中为同一个应用程序启动多个组件时,这非常有用。

 ps ax | grep <snippet> | grep -v grep | awk '{print $1}' | xargs kill 
 ps aux | grep processname | cut -d' ' -f7 | xargs kill -9 $ 

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