我如何用它的名字杀死一个进程?


44

有时我注意到该过程Python挂起了。然后,我将通过活动监视器将其杀死,一切都很好。

我想在终端中终止该进程。但是,查找名称PID似乎是不必要的,因为名称仅包含一个过程Python

是否可以通过其唯一名称杀死进程?

Answers:


52

您应该能够运行命令sudo killall Python

您需要以root身份运行,因为Python属于root,而不是用户。


我做到了:No matching processes belonging to you were found
gentmatt 2012年

1
Python进程不属于您的用户。尝试以root用户身份使用:sudo killall Python
HenningJ 2012年

1
@HenningJ Sudo由于某种原因而工作。我只是看到该过程确实属于我。我可以不杀的过程中sudo,当我杀了它用它的PID。为什么?
gentmatt 2012年

1
我想这是因为使用PID并非特定于用户/根用户,而使用的是进程名称。我将编辑此答案以进行反映sudo
马特·洛夫

这也适用于多个同名进程,很好
chrismarx

20
sudo killall -s SIGINT "process name"

如果您不能成为sudo,因为它会要求输入密码,我觉得您不希望在脚本中输入密码。抢救来了:)

pkill -9 "process name"

5

您可以使用作为GUI解决方案的Activity Monitor.app终止应用程序。那将是一个简单的“强制退出”。但是,在某些情况下,由于不同的原因,这种方法并不总是可行的!

上面评论中提到的命令行解决方案为用户提供了更多选择。sudo killall Python或者如果它正在运行,则程序进程sudo killall /Applications/Whatever.app也会强制该进程退出。

您还可以使用分配的PID强制进程退出。在活动Monitor.app的情况下,这将是kill 25794kill -9 25794

在此处输入图片说明

一些更多的细节:

终端中的kill程序只是强制退出程序,就像通​​过远程控制一样。(甚至当您从远程位置SSH进入Mac时,它也可以使用。在kill命令中输入要终止的程序的进程ID号(短PID)。

除非您也使用sudo,否则您只能杀死“拥有”的程序,即在您的帐户下运行的程序。(操作系统本身(root)始终在运行自己的程序,从技术上讲,即使您使用Mac,其他人也可能从路上拨入而自己运行程序!)

-9标志是“不可捕获,不可忽略的杀戮”。换句话说,它是一个具有工业实力的刺客,不会接受您要杀害的程序发出的求饶请求。


5

尽管它确实使用PID,但我发现以下内容非常有效:

ps aux | grep "String or name of process"

此行返回有关匹配过程的大量信息,您可以kill从那里进行任何操作。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.