~/Library/LaunchAgents
Mavericksでうまく機能するlaunchdデーモンを配置しました。しかし、Yosemiteパブリックベータ版では開始されません。デーモン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の両方のアクセス許可を試しました。
だから、Yosemiteでlaunchdデーモンを適切に起動する方法を知っていますか?
更新:起動エージェントファイルの所有者はであるようroot:wheel
です。チャウンした後、私は試しました
sudo launchctl load ~/Library/LaunchAgents/retrmail.plist
そして、それはエラーを発行しませんでした。そして、私はデーモンが適切に動作していると思います。launchd文書には、デーモンを実行しているユーザーが起動エージェントファイルを所有できることが明確に記載されていることを覚えているため、この質問は開いたままにします。
UPDATE2:いいえ、正しく実行されていませんでした。アンロードされたかのように、一度だけ実行されましたが、二度と実行されませんでした。
更新3:ヨセミテパブリックベータ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の何が問題なのかわからないため、この質問はまだ開いたままです。
結論として、私が見つけたのは、plistの所有者をに変更する必要があるというroot:wheel
ことです。