如何在 Mac OS X 中终止进程而不让其自行重启

如何在 Mac OS X 中终止进程而不让其自行重启

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

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

我把活动监视器和终端放在一起,看看命令是否有效,但每次我这样做时sudo kill -9 [PID],活动监视器中的进程都不会消失,只是用新的 PID 刷新。

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

答案1

您正在终止的进程可能由启动,停止它并使其不重新启动的正确方法是使用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

答案2

有几条评论提到“launchd 可能参与其中” - 所以我想把这个作为附加答案。正如 @jarrod-roberson 所说,您可以通过先运行来检查 launchd 是否参与其中launchctl list | grep mysqld

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

在我的 OSX 机器上,plist文件位于~/Library/LaunchAgents/所以我运行:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

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

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

答案3

我尝试通过发送信号来终止该进程TERM,并且成功了。命令如下:

sudo kill -15 {PID}

答案4

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

sudo launchctl unload -w /Library/LaunchDaemons/com.mysql.mysql.plist

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

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist

相关内容