alm*_*mel 7 launchd launchctl macos
为什么我的配置 plist 文件没有使用 launchctl 作为服务加载?
我正在运行 OSX Yosemite,我已经阅读了这个关于使用 launchctl http://nathangrigg.net/2012/07/schedule-jobs-using-launchd/ 的优秀教程
我已经使用服务的配置创建了一个正确的 .plist 文件(我知道这是正确的,因为它几乎是我几年前创建的工作 plist 配置文件的副本)。我输入
launchctl load ~/Library/LaunchAgents/com.apple.myservice.plist
Run Code Online (Sandbox Code Playgroud)
并得到回应
~/Library/LaunchAgents/com.apple.myservice.plist: File exists
Run Code Online (Sandbox Code Playgroud)
这不是非常具有描述性,但我去打字
launchctl start com.apple.myservice
Run Code Online (Sandbox Code Playgroud)
并且没有输出,什么也没有发生。我也尝试使用
launchctl enable ~/Library/LaunchAgents/com.apple.myservice.plist
Run Code Online (Sandbox Code Playgroud)
我只是得到一个
Usage: launchctl enable <service-target>
Run Code Online (Sandbox Code Playgroud)
作为回应。
有人可以回复在 OSX Yosemite 上加载启动服务的正确语法吗?
coo*_*j86 13
我创建了一个跨平台工具来处理创建launchd和systemd服务文件:
launchd 很容易进入“怪异”状态。
load意味着读取配置文件并可能安排启动。unload意味着stop 和取消调度配置文件start 将启动服务(忽略时间表,我相信)stop 将停止服务(再次,忽略时间表)通常,如果您想“重新启动”它,您可以像这样卸载并重新加载配置:
launchctl unload -w ~/Library/LaunchAgents/com.apple.myservice.plist
launchctl load -w ~/Library/LaunchAgents/com.apple.myservice.plist
Run Code Online (Sandbox Code Playgroud)
的-w意思是“写”,这意味着该变化将影响重新启动(将加载每次登录或启动...或不会在登录或启动以后再加载)。
如果它是系统级服务(在/Library/LaunchDaemons或者/Library/LaunchAgents你可能需要这样做sudo(如果你在没有 sudo 的情况下错误地做了,你可能需要在没有 sudo 的情况下卸载它,然后用 sudo 重新加载它)
导致它start打开的文件中的关键load是RunAtLoad(KeepAlive如果它因某种原因死亡,则保持运行)
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
Run Code Online (Sandbox Code Playgroud)
从 launchctl 本身获取调试日志有时会很棘手,但密钥StandardErrorPath和StandardOutPath至少可以帮助您了解您的应用程序是否因丢失或错误信息(例如,未扩展的环境变量或不可写的路径)而死亡。只需确保您指定的路径可由运行该进程的用户写入。
<key>StandardErrorPath</key>
<string>/tmp/appname-error.log</string>
<key>StandardOutPath</key>
<string>/tmp/appname-info.log</string>
Run Code Online (Sandbox Code Playgroud)
因为它们很难调试,我建议使用LaunchControl或启动并将其与launchd.info的健康阅读混合。
此外,这里还有许多调试提示:https : //serverfault.com/questions/183589/how-do-i-activate-launchd-logging-on-os-x
我自己还没有尝试过,但这个解决方案看起来最简单:
sudo launchctl log level debug
tail -f /var/log/system.log
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34662 次 |
| 最近记录: |