LaunchAgent 拒绝启动并出现“launch_msg():Socket 未连接”错误

LaunchAgent 拒绝启动并出现“launch_msg():Socket 未连接”错误

我创建了一个 pkg 包来创建 LaunchAgent 来启动守护进程,并在安装后脚本文件中使用这种方式来启动守护进程:

launchctl load -s /Library/LaunchAgent/file-name.plist

效果很好。

但是有一个问题:第一次启动守护进程时,在终止此守护进程并重新安装 LauchAgent 时,它无法启动或终止守护进程。它会在终端中显示以下内容:

file-name.plist: Already loaded

如果我重新启动或注销,它可以正确启动。我该如何解决这个问题?


将我的 y 安装后脚本文件修改为:

sudo -u $USER /bin/launchctl unload -S Aqua /Library/LauchAgent/file-name.plist
sudo -u $USER /bin/launchctl load -S Aqua /Library/LauchAgent/file-name.plist

根据@Daniel的评论,确实修复了之前的问题。这在Mac OS X 10.6和10.7上运行良好,但在10.5上,守护进程无法以这种方式启动。安装后,我在终端中尝试了脚本文件。以下是一些信息:

launchctl:Error unloading: file-name.plist
launch_msg():Socket is not connected

答案1

您遇到的问题出现在您尝试加载 LaunchAgent 时,且有多个用户登录(即通过快速用户切换)。请参阅Apple 开发者关系部门的 Quinn “The Eskimo” 在 launchd 邮件列表中发了这条消息,有关更多详细信息,他在 Old Nabble 上发表的这条消息。请参阅那里寻求解决方案(TL;DR:重新启动)。

注意,我不确定该问题是否只存在于 10.5 中——我找不到 Quinn 链接到的 Radar 问题 5476420打开雷达确认其状态。

答案2

为了使其在 10.5 中正常工作,请su使用sudo

su "$USER" -c "/bin/launchctl unload -S Aqua /Library/LauchAgent/file-name.plist"
su "$USER" -c "/bin/launchctl load -S Aqua /Library/LauchAgent/file-name.plist"

我不知道为什么他们的行为不同。

相关内容