【问题标题】:How to kill a process in MacOS?如何在 MacOS 中杀死进程?
【发布时间】:2010-10-28 12:48:15
【问题描述】:

我试过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

【问题讨论】:

  • 首先执行kill -15 ...不是一个好习惯,如果这不起作用然后kill -1 ...,如果这不起作用然后kill -9 ...

标签: macos


【解决方案1】:

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

解决方案:

$ sudo kill -9 PID

好的,Mac OS/X 确实针对这种情况给出了错误消息:

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

因此,如果您没有收到错误消息,则说明您没有获得正确的 PID。

【讨论】:

  • 可能是对的,但我似乎记得 kill 如果进程不属于杀手,则会给出错误消息。
  • 天哪,这是从 UNIX 到 UNIX 不同的行为之一。最好不要有这个错误,因为它是一个隐蔽的通道;另一方面,这是一条有用的错误消息。
  • 哪个 UNIX 在这里没有错误?我测试了 BSD、Linux 和 Solaris,都给出了上述错误的某种形式(EPERM)。
  • 我不知道,但如果我不得不猜测,我会猜测 Solaris 具有受信任的扩展(隐蔽通道问题)。另外,请注意在 kill 之后有几个空行。我想知道为什么?
  • 这是在我的港口杀死恶魔的唯一方法,谢谢
【解决方案2】:

在某些情况下,您可能希望终止在特定端口上运行的所有进程。例如,如果我在 3000 端口上运行一个节点应用程序,我想杀死它并启动一个新的;然后我发现这个命令很有用。

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

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

【讨论】:

  • 正是需要的
【解决方案3】:

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

killall Dock

如果没有,您可以打开活动监视器并找到它。

【讨论】:

  • 我认为实际运行该命令可能是个坏主意。我想你可以很容易地重新启动扩展坞,但我不知道这种方法是否会有任何问题。
  • 这只是一个过程的例子,我不希望他杀死他的码头。我假设killall 与 kill 相比采用不同的字符串。
【解决方案4】:

我刚刚搜索了这个,因为我处于类似的情况,而不是kill -9 698,我尝试了sudo kill 428,其中 428 是我要杀死的进程的 pid。在没有连字符“-”字符的情况下,它对我来说很干净。希望对你有帮助!

【讨论】:

  • 是的尝试 sudo kill -9 PID - 这对我有用(idk 为什么我们不能从用户那里杀死它并需要提升)
【解决方案5】:

如果kill -9 不起作用,那么killall 也不会起作用(甚至killall -9 会更“强烈”)。显然,铬进程被困在一个不可中断的系统调用中(即,在内核中,而不是在用户空间中)——不认为 MacOSX 有任何剩下的,但我想总会有一个:-(。如果那样的话进程有一个控制终端,您可能可以在后台运行它并在后台运行时将其杀死;否则(或者如果即使进程停止运行,强烈的杀戮也不起作用)我没有想法,我想您可能需要重新启动:-(。

【讨论】:

    【解决方案6】:

    鉴于您的程序的路径,我假设您当前正在 Xcode 下运行它,并且可能处于调试断点处。由于断点的底层实现,无法在此状态下终止进程。

    第一步是转到您的 Xcode 进程并停止调试。如果由于某种奇怪的原因您无法访问 Xcode(也许 Xcode 无法访问其 gdb 子进程),那么解决方案是终止 gdb 进程。更一般地说,这里的解决方案是杀死父进程。在您的情况下,这是 PID 811(第三列)。

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

    【讨论】:

      【解决方案7】:

      我经历过,如果kill -9 PID 不起作用并且您拥有该流程,则可以使用kill -s kill PID,这有点令人惊讶,因为手册页上说您可以kill -signal_number PID

      【讨论】:

      • kill -s kill 9 帮了我
      【解决方案8】:

      我最近遇到了类似的问题,原子编辑器不会关闭。两人都没有回应。 Kill / kill -9 / 强制退出活动监视器 - 不起作用。最后不得不重新启动我的mac来关闭应用程序。

      【讨论】:

        【解决方案9】:

        在聚光灯下,搜索活动监视器。您可以从此处强制完全删除任何应用程序。

        【讨论】:

          猜你喜欢
          • 2020-04-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-24
          • 2011-12-21
          • 2019-01-07
          • 1970-01-01
          相关资源
          最近更新 更多