You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置KeepAlive为true后,进程终止仍无法自动重启求助

macOS Launchd plist KeepAlive 不生效的排查与修复

核心问题排查与修复步骤

1. 路径空格解析错误

你的ProgramArguments中路径包含空格(COMPANY_NAME PRODUCT_NAME.app),直接作为单个字符串会被launchd拆分识别,导致无法定位程序。
修复方式:将带空格的路径拆分为数组元素:

<key>ProgramArguments</key>
<array>
    <string>/Applications/COMPANY_NAME</string>
    <string>PRODUCT_NAME.app/Contents/MacOS/PRODUCT_NAME</string>
</array>

2. Label命名不规范

launchd要求Label为全小写反向域名格式,你的com.dra.inycAent包含大写字母,建议修改为com.dra.inyncagent,避免识别异常。

3. 文件位置与权限问题

  • plist必须放在对应目录:
    • 用户级:~/Library/LaunchAgents/
    • 系统级:/Library/LaunchAgents/(需sudo权限)
  • 确保文件权限为644,执行命令修改:
    chmod 644 ~/Library/LaunchAgents/com.dra.inyncagent.plist
    

4. KeepAlive 行为限制

默认KeepAlive = true仅在进程意外崩溃时触发重启,用户主动终止(如Activity Monitor手动退出、kill命令)不会生效。若需无论何种终止方式都重启,替换为字典配置:

<key>KeepAlive</key>
<dict>
    <key>SuccessfulExit</key>
    <false/>
</dict>

该配置表示即使进程正常退出(返回码0),也会强制重启。

5. 重新加载与状态验证

修改plist后必须重新加载:

# 卸载旧配置
launchctl unload ~/Library/LaunchAgents/com.dra.inyncagent.plist
# 加载新配置
launchctl load ~/Library/LaunchAgents/com.dra.inyncagent.plist

查看服务运行状态:

launchctl list | grep com.dra.inyncagent

若启动失败,查看系统日志定位问题:

log show --predicate 'process == "launchd" && subsystem == "com.apple.launchd"' --info --last 10m

内容的提问来源于stack exchange,提问作者Rushikesh Korde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 11:23:17