如何杀死MacOS中的进程?

我试图kill -9 698但过程并没有死亡。

 $ ps -ef | grep chromium 502 698 811 0 0:01.24 ?? 0:07.28 /Users/lucius/chromium/src/xcodebuild/Debug/Chromium.app/Contents/MacOS/Chromium 502 854 732 0 0:00.00 ttys001 0:00.00 grep chromium $ kill -9 698 $ ps -ef | grep chromium 502 698 811 0 0:01.24 ?? 0:07.28 /Users/lucius/chromium/src/xcodebuild/Debug/Chromium.app/Contents/MacOS/Chromium 502 854 732 0 0:00.00 ttys001 0:00.00 grep chromium 

如果你试图杀死它,你有正确的PID,没有任何反应,那么你没有权限杀死进程。

解:

 $ sudo kill -9 PID 

好吧,果然,Mac OS / X确实给出了这种情况下的错误消息:

 $ kill -9 196 -bash: kill: (196) - Operation not permitted 

所以,如果你没有收到错误信息,你不知道如何得到正确的PID。

如果您知道可以使用的进程名称:

 killall Dock 

如果你不这样做,你可以打开Activity Monitor并find它。

如果kill -9不起作用,那么killall (甚至killall -9哪个会更“激烈”)。 显然铬的过程是卡在一个不可中断的系统调用(即,在内核,而不是在userland) – 不认为MacOSX有任何剩下的,但我想总有一个:-(如果过程有一个控制terminal,你可以背景它,并在背景时杀死它;否则(或者如果强烈的杀害不工作,即使一旦过程是不合理的)我不知道,我想你可能不得不重新启动:-(。

考虑到你的程序的path,我假设你目前正在Xcode下运行它,可能是在一个debugging断点。 由于断点的底层实现,进程不能在这个状态下被杀死。

第一步是去你的Xcode进程并停止debugging。 如果出于某种奇怪的原因,您已经失去了对Xcode的访问(也许Xcode已经失去了对其gdbsubprocess的访问),那么解决办法就是杀死gdb进程。 更一般地说,这里的解决scheme是杀死父进程。 在你的情况下,这是PID 811(第三列)。

在这种情况下不需要使用-9。

我刚刚search了这个,因为我在类似的情况,而不是kill -9 698我试图sudo kill 428 ,其中428是我试图杀死进程的PID。 它在没有连字符“ – ”的情况下为我干净地工作。 我希望它有帮助!

有些情况下,您可能想要终止在特定端口中运行的所有进程。 例如,如果我在3000端口上运行一个节点应用程序,我想杀死它并启动一个新的; 那么我觉得这个命令很有用。

find在TCP端口3000上运行的进程ID并杀死它

 kill -9 `lsof -i TCP:3000 | awk '/LISTEN/{print $2}'` 

我已经经历过,如果kill -9 PID不起作用并且你拥有这个进程,那么你可以使用kill -s kill PID ,这是一种令人惊讶的方式,因为手册页说你可以kill -signal_number PID