当我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