我正在使用 launchd 服务加载 ac 二进制文件。每次系统重启时都应该重新加载。下面是我的 plist 文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example</string>
<key>ProgramArguments</key>
<array>
<string>/etc/example/usr/sbin/example_cbinary</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
有时,它会以 78 退出代码退出。
launchctl list | grep example
- 78 com.example
我找不到根本原因。因为这种情况百发百中。为了解决这个问题,我正在卸载和加载此服务。我希望它在以 78 状态退出时自动卸载和加载。
任何帮助都非常值得赞赏
提前致谢
答案1
我知道这是一篇老文章,但我遇到了同样的问题,可以通过编写一个 python 脚本来解决它,该脚本 grep 78 并调用系统命令(例如 shell 脚本)来卸载和加载服务。并将此脚本放入 crontab
伪代码: /bin/bash #!/bin/bash 导出 PATH=(你的 $PATH) erg = `launchctl 列表 | grep 示例 | grep 78` 如果 [ $erg = '78'] 然后 launchctl 卸载/Library/LaunchDeamons/example.plist launchctl 加载/Library/LaunchDeamons/example.plist # 或许还 launchctl 启动示例 菲
如果该脚本可以在 shell 上正确执行,则将其放入 crontab。
cron 条目示例: * * * * * reload_example.sh(注意访问权限和新的糟糕的安全选项)
也许这是一个有用的提示。