我尝试了
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
如果你试图杀死-9它,你有正确的PID,但没有任何反应,那么你没有权限杀死该进程。
解决方案:
$ sudo kill -9 PID
好吧,Mac OS/X 确实针对这种情况给出了错误消息:
$ kill -9 196
-bash: kill: (196) - Operation not permitted
因此,如果您没有收到错误消息,则说明您没有获得正确的 PID。
某些情况下,您可能想要终止在特定端口中运行的所有进程。例如,如果我在 3000 端口上运行一个节点应用程序,并且我想终止该应用程序并启动一个新的应用程序;然后我发现这个命令很有用。
找到在 TCP 端口 3000 上运行的进程 ID 并将其杀死
kill -9 `lsof -i TCP:3000 | awk '/LISTEN/{print $2}'`
您可以使用命令
lsof
列出使用端口的进程,例如:
lsof -i tcp:PORT_NUMBER_HERE
将单词
PORT_NUMBER_HERE
替换为您正在使用的端口号,然后将列出该端口上运行的进程。然后你只需杀死像这样创建的进程ID:
kill -9 PID_NUMBER
其中
PID_NUMBER
是端口上运行的进程 ID。
并且
-9
是选项KILL (non-catchable, non-ignorable kill)
要查看手册,只需打开终端即可
man kill
如果您知道可以使用的进程名称:
killall Dock
(将“Dock”替换为进程名称。)如果您不知道进程名称,可以打开“活动监视器”并找到它。
如果
kill -9
不起作用,那么 killall
也不起作用(甚至 killall -9
会更“激烈”)。显然,chromium 进程陷入了不可中断的系统调用中(即,在内核中,而不是在用户空间中)——我认为 MacOSX 中没有剩下任何一个,但我猜总会还有一个:-(。如果那样的话进程有一个控制终端,您可能可以将其置于后台并在后台杀死它,否则(或者如果即使进程被后台处理,强烈的杀戮也不起作用)我没有主意,我想您可能必须重新启动; :-(.
我刚刚搜索了这个,因为我处于类似的情况,而不是
kill -9 698
,我尝试了sudo kill 428
,其中428是我试图杀死的进程的pid。在没有连字符“-”的情况下,它对我来说工作得很好。我希望它有帮助!
鉴于您的程序的路径,我假设您当前正在 Xcode 下运行该程序,并且可能处于调试断点。由于断点的底层实现,在此状态下无法终止进程。
第一步是转到 Xcode 进程并停止调试。如果由于某种奇怪的原因你失去了对 Xcode 的访问(也许 Xcode 失去了对其 gdb 子进程的访问),那么解决方案是终止 gdb 进程。更一般地说,这里的解决方案是终止父进程。在您的情况下,这是 PID 811(第三列)。
在这种情况下不需要使用-9。
我的经验是,如果
kill -9 PID
不起作用并且您拥有该流程,则可以使用 kill -s kill PID
,这有点令人惊讶,因为手册页说您可以 kill -signal_number PID
。
我最近遇到了类似的问题,原子编辑器无法关闭。两人都没有回应。 Kill / Kill -9 / 强制从活动监视器退出 - 不起作用。最后不得不重新启动我的 Mac 来关闭应用程序。
终止进程:
kill -s KILL [PID]
其中 -s 指定要发送到 PID 的 信号名称