![如何在不重启的情况下重新启动 launchd OS X?](https://linux22.com/image/1360461/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E9%87%8D%E5%90%AF%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%20launchd%20OS%20X%EF%BC%9F.png)
当我运行 Zotero/Firefox 时,它们经常崩溃,留下僵尸进程;此后我无法打开 Zotero 或 Firefox 的新实例。我想摆脱这些僵尸进程,而不是重新启动,因此对于<pid>
僵尸进程,
$ ps -p <pid> -o ppid=
给了我<parent_pid>
和
ps aux | awk -v PID=<parent_pid> '$2 == PID {print $0}'
告诉我父进程是/sbin/launchd
为用户准备的crippledlambda
。
有没有办法在不关闭系统的情况下重新启动它?
sudo kill -1 <parent_pid>
什么都不做。我尝试将其写入脚本中,然后使用以下命令运行它sudo
:
for i in `launchctl list | grep launchd | awk -v PID=<parent_pid> '$1==PID { print $NF }'`; do `launchctl stop $i && launchctl start $i` ; done
这显然(?)导致我的屏幕变成灰色,没有响应,所以我必须重启。提前感谢您的建议。
答案1
停止和启动启动守护进程的正确方法是启动卸载。
例如:
您可以使用以下方式停止启动守护程序服务卸下的子命令启动控制。
$ sudo launchctl unload /System/Library/LaunchDaemons/<daemon name>.plist
要启动已禁用或已停止的启动守护程序:
$ sudo launchctl load /System/Library/LaunchDaemons/<daemon name>.plist
★ 随意禁用启动守护进程时要小心 - 尤其是官方的 Apple 守护进程;这可能会使您的系统无法启动,直到您以安全模式启动并手动重新启用它们。您不会杀死启动控制就像一个正常的过程,因为它可能杀您的系统就像您体验过的一样。
> 有关 launchctl 的更多信息请点击此处.(Apple launchctl 手册页)
答案2
从 launchd 手册页中:
您不能直接调用 launchd。
因此,即使你可以阻止它,你也无法启动它,所以答案是没有办法。