如何在 Mac OS X 中杀死进程而不让它自己重新启动

Hri*_*sto 38 terminal services kill launchd macos

当我sudo kill -9 [PID]使用正确的进程 ID运行时,该进程停止但随后重新启动并具有新的 PID。我正在尝试终止该mysqld进程。

如何在终止进程时模仿活动监视器?在活动监视器中,当您按“退出进程”时,进程将永久停止运行,完全终止。我想这kill会做同样的事情吗?

我让活动监视器和终端彼此相邻,以查看命令是否有效,但每次我这样做时sudo kill -9 [PID],活动监视器中的进程都不会消失,它只是用新的 PID 刷新。

那么......我如何mysqld通过终端终止进程?

小智 25

您正在杀死的进程可能由launchd管理,停止它并且不重新启动它的正确方法是使用launchctl unload <path to plist>. 控制该进程的 plist 位于/Library/LaunchDaemons或 中/System/Library/LaunchDaemons。如果它是一个系统进程而不是您自己的进程,那么您可能必须使用sudo它才能launchctl根据需要开始工作。

尝试阻止它的更好方法可能是;

${MYSQL_HOME}/bin/mysqladmin -u root -proot shutdown > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

  • 我遇到了同样的问题,并且能够通过通过`sudo launchctl unload /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist`从launchd中删除mysql来解决 (7认同)
  • 如果它在 `kill -9` 之后被重述,则可能涉及到 launchd,即使是间接的。你可以通过使用`launchctl list`来判断 (4认同)

小智 17

有几条评论提到“可能涉及launchd” - 所以我想我会把它作为一个额外的答案。正如@jarrod-roberson 所说,您可以通过首先运行launchctl list | grep mysqld.

您在这里学到的一件重要事情是 MySQL 是否与 Homebrew 一起安装 - Brew 将其launchctl文件存储在与 OSX 放置“常规”服务的位置不同的位置。

在我的 OSX 机器上,plist文件在~/Library/LaunchAgents/所以我跑了:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Run Code Online (Sandbox Code Playgroud)

停止 MySQL 服务器。我以前查看过/Library/LaunchDaemons//Library/LaunchAgents但没有找到mysqld名称中的文件。

您还可以安装一个名为 的基于 brew 的系统services来管理所有 Brew 安装的服务应用程序,如本文所述 - http://robots.thoughtbot.com/starting-and-stopping-background-services-with-homebrew I不过,我自己还没有尝试过,所以 YMMV。

  • 这就是为我修复它的原因。当您在使用多种不同的方式在本地运行 LAMP 堆栈时,总是很痛苦。 (2认同)

Hri*_*sto 13

我试图通过向它发送TERM信号来终止该进程,并且奏效了。命令是:

sudo kill -15 {PID}
Run Code Online (Sandbox Code Playgroud)


小智 13

对我来说,一旦我弄清楚我在寻找哪个标签,这就会奏效。

launchctl list | egrep {DESIRED_LABEL}   
launchctl remove {DESIRED_LABEL}
Run Code Online (Sandbox Code Playgroud)


小智 7

卸载服务并停止守护进程:

sudo launchctl unload -w /Library/LaunchDaemons/com.mysql.mysql.plist
Run Code Online (Sandbox Code Playgroud)

加载服务并启动守护进程:

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
Run Code Online (Sandbox Code Playgroud)