我怎么能杀的名字,而不是PID的过程?(How can I kill a process by na

2019-08-31 12:04发布

有时,当我尝试启动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')似乎只已与执行过程中显示exec()在PHP脚本本身(所以只能处理它展现的是自己。)

Answer 1:

pkill firefox

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



Answer 2:

也可以使用:

pkill -f "Process name"

对我来说,它的工作完美,这就是我一直在寻找。 在我的情况没有标志pkill的没有用名工作。

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



Answer 3:

您可以通过杀死名称以流程killall <name>

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

信号可以被指定或者通过域名(例如,四合成-SIGHUP)或数目(例如-1),或者通过选项-s。

如果命令名称不是正则表达式(选项-r)和包含斜杠(/),流程执行该特定文件将被选择用于杀死,独立于它们的名字。

但是,如果你没有看到过程ps aux ,你可能不会有杀人的权利......



Answer 4:

长一点的选择:

kill `pidof firefox`


Answer 5:

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

pgrep -f [part_of_a_command]

如果如预期的结果。 一起去的:

pkill -f [part_of_a_command]


Answer 6:

奇怪,但我还没有见过这样的解决方案:

kill -9 `pidof firefox`

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

kill -9 `pgrep firefox`

我喜欢pidof因为它有一个线路输出:

> pgrep firefox
6316
6565
> pidof firefox
6565 6316


Answer 7:

在Mac上我找不到和pgrep和pkill命令也不是killall工作,所以写了一个简单的衬垫脚本: -

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

如果有这样的一个简单的方法,那么请共享。



Answer 8:

使用#killall命令:

#killall -9 <processname>


Answer 9:

杀死其所有进程snippet中启动路径。 您可以通过把/目录/作为一个片断杀死一些目录开始所有的应用程序。 当你开始从同一应用程序目录下的同一个应用程序几部分组成,这是非常有用的。

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

*我会preffer p纤ep(如果可用)



Answer 10:

要使用grep杀:

kill -9 `pgrep myprocess`


Answer 11:

更正确的是:

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


Answer 12:

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



Answer 13:

我问自己同样的问题,但与目前的答案的问题是,他们没有安全检查的过程被如此被杀 ......这可能会导致可怕的错误:)......特别是如果几个进程的模式相匹配

作为一个声明,我不是一个SH亲和的肯定是有改进的余地。

所以我写了一个小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


Answer 14:

默认kill命令接受命令名称作为替代PID。 见杀(1) 。 一个经常出现的问题是, bash提供了自己kill它接受就业数字,像kill %1 ,而不是命令名。 这阻碍了默认的命令。 如果是前者的功能是你比后者更加有用,您可以禁用bash通过调用版本

enable -n kill

欲了解更多信息请参见killenable在项目的bash(1) 。



Answer 15:

如果您运行GNOME,您可以使用系统监视器(系统 - >管理 - >系统监视器)来杀死进程,你会在Windows下。 KDE将有类似的东西。



Answer 16:

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


Answer 17:

杀-9 $(的ps aux | grep的-e myprocessname | awk的 '{打印$ 2}')



文章来源: How can I kill a process by name instead of PID?
标签: linux bash shell