我在其中放置了一个启动的守护进程,~/Library/LaunchAgents
该守护进程在Mavericks中运行良好。但这不会在优胜美地公开测试版中开始。守护程序plist就像这样(我的用户名darksair
使用UID 501)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.darksair.retrmail</string>
<key>ProgramArguments</key>
<array>
<string>/Users/darksair/bin/retrmail.py</string>
</array>
<key>KeepAlive</key>
<false/>
<key>StartInterval</key>
<integer>300</integer>
<key>LaunchOnlyOnce</key>
<false/>
<key>UserName</key>
<string>darksair</string>
<key>ProcessType</key>
<string>Standard</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/Users/darksair/Python/bin:/Users/darksair/Python3/bin:/Users/darksair/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>
<key>StandardOutPath</key>
<string>/Users/darksair/logs/retrmail.log</string>
<key>StandardErrorPath</key>
<string>/Users/darksair/logs/retrmail.log</string>
</dict>
</plist>
基本上应该~/bin/retrmail.py
每5分钟运行一次。
我注意到在Yosemite中,launchd已升级到2.0,并且launchctl具有新命令。我试过了
sudo launchctl kickstart user/501/org.darksair.retrmail
它说
Could not find service "org.darksair.retrmail" in domain for uid: 501
我也尝试过旧学校
sudo launchctl load ~/Library/LaunchAgents/retrmail.plist
它说
/Users/darksair/Library/LaunchAgents/retrmail.plist: Path had bad ownership/permissions
该文件归我和工作人员小组所有。我尝试了权限644和600都出现相同的错误。
那么,有谁知道如何在优胜美地适当启动启动的守护程序?
更新:看来我的启动代理文件必须由拥有root:wheel
。穿好后,我尝试
sudo launchctl load ~/Library/LaunchAgents/retrmail.plist
它没有发出任何错误。而且我认为我的守护进程运行正常。我将这个问题保留为开放状态,因为我记得启动的文档明确指出启动代理文件可以由运行守护程序的用户拥有。
UPDATE2:不,它运行不正常。它只运行了一次,但没有再次运行,就好像已卸载一样。
UPDATE3:我升级到优胜美地公开测试版3,并将我的代理更改为
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.darksair.retrmail</string>
<key>ProgramArguments</key>
<array>
<string>/Users/darksair/bin/retrmail.py</string>
</array>
<key>StartInterval</key>
<integer>300</integer>
<key>UserName</key>
<string>darksair</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/Users/darksair/Python/bin:/Users/darksair/Python3/bin:/Users/darksair/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>
<key>StandardOutPath</key>
<string>/Users/darksair/logs/retrmail.log</string>
<key>StandardErrorPath</key>
<string>/Users/darksair/logs/retrmail.log</string>
</dict>
</plist>
我重新加载了该代理,现在我认为它可以正常工作。我仍未解决此问题,因为我不知道我以前的列表有什么问题。
总之,我发现必须将plist的所有者更改root:wheel
为才能加载它。