如何在不重新启动的情况下重新启动已启动的OS X?


14

当我运行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针对user的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

而这显然使我的屏幕无响应,因此无论如何我都必须重新启动。预先感谢您的建议。


为什么您要杀死启动而不是剩余进程本身?启动是用户会话的核心部分;即使您可以重新启动它,新实例也不是它负责的所有其他进程的父级……Finder,Dock等之类的东西
Gordon Davisson 2013年

@戈登,你不能杀死僵尸进程,所以除非我错过了什么,否则你必须去追捕父母。
hatmatrix

它们是真正的僵尸(即已退出但尚未读取其退出状态的进程)吗?如果它们是,那么更深层次的事情是错误的,因为launchd应该始终立即读取其子级的退出状态。如果它们不是真正的僵尸,那么您应该杀死它们。在任何一种情况下,杀戮launchd都会带来比解决方案更多的问题。
Gordon Davisson

Answers:


17

停止和启动启动守护程序的正确方法是launchctl unload

例如:

您可以使用launchctlunload子命令停止启动守护程序服务。

$ sudo launchctl unload /System/Library/LaunchDaemons/<daemon name>.plist

要启动已禁用或已停止的启动守护程序:

$ sudo launchctl load /System/Library/LaunchDaemons/<daemon name>.plist

★小心地禁用启动守护进程-特别是苹果官方的守护进程;在您以安全模式启动并手动重新启用它们之前,它可能使您的系统无法启动。您不会像正常进程那样杀死launchctl,因为它可能像您经历的那样杀死您的系统。

>在这里有更多关于launchctl的信息。(Apple launchctl手册页)


对不起,是com.apple.bsd.launchdadd.plist吗?我没看清楚launchd。并感谢您的警告...
hatmatrix

为了将来参考,这些命令也可与一起使用scrun simctl spawn <sim_id> sudo launchctl unload …。plist文件位于$(xcode-select -p)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/LaunchDaemons/
Leo Natan

3

在启动的手册页中:

您不能直接调用启动。

因此,即使您可以停止它,也将无法启动它,所以答案是没有办法。


1
为什么要下票?我的帖子正确回答了所问的问题。当然,其他帖子更具建设性,但实际上却无法按照帖子标题回答实际问题!
ostergaard '18

另一个帖子确实回答了这个问题。
DavidPostill

2
不,它没有,它说了如何重新启动本身未启动的守护程序。
ostergaard

3
大声笑-正是这种态度,准确性不再重要,这可以解释SO质量的缓慢下降。新年快乐!
ostergaard

1
太糟糕了,我不能拒绝评论。不仅这个答案是正确的,其他答案也根本无法真正解决该问题。这与启动时启动的守护进程无关,而是在无响应的进程被强制终止时启动时继承的僵尸进程。我有同样的问题,没有死的守护进程,因为它是一个触发启动错误行为的浏览器。回复“无论如何”都会让我热血沸腾,因为发现答案有用的那些人一开始就无法理解问题,而且情况恶化了一个数量级。
SaltwaterC
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.