Ich habe einen launchd-Daemon ~/Library/LaunchAgents
, der in Mavericks gut funktioniert. In der öffentlichen Betaversion von Yosemite wird es jedoch nicht gestartet. Die Daemon-Liste sieht so aus (mein Benutzername ist darksair
mit der 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>
Grundsätzlich soll es ~/bin/retrmail.py
alle 5 Minuten laufen .
Ich stelle fest, dass in Yosemite launchd auf 2.0 aktualisiert wird und launchctl neue Befehle hat. Ich habe es versucht
sudo launchctl kickstart user/501/org.darksair.retrmail
und es hieß
Could not find service "org.darksair.retrmail" in domain for uid: 501
Ich habe auch die alte Schule ausprobiert
sudo launchctl load ~/Library/LaunchAgents/retrmail.plist
und es hieß
/Users/darksair/Library/LaunchAgents/retrmail.plist: Path had bad ownership/permissions
Die Datei gehört mir und der Personalgruppe. Ich habe beide Berechtigungen 644 und 600 mit demselben Fehler versucht.
Weiß jemand, wie man einen launchd-Daemon in Yosemite richtig startet?
UPDATE: Sieht so aus, als müsste meine Launch Agent-Datei im Besitz von sein root:wheel
. Nachdem ich chown, versuchte ich es
sudo launchctl load ~/Library/LaunchAgents/retrmail.plist
und es gab keinen Fehler aus. Und ich denke, mein Deamon läuft einwandfrei. Ich lasse diese Frage offen, da ich mich erinnere, dass im launchd-Dokument eindeutig angegeben ist, dass der Benutzer, der den Dämon ausführt, Eigentümer der Datei des Startagenten sein kann.
UPDATE2: Nein, es lief nicht richtig. Es wurde nur einmal ausgeführt, aber nicht erneut, als wäre es entladen worden.
UPDATE3: Ich habe ein Upgrade auf die öffentliche Beta 3 von Yosemite durchgeführt und meinen Agenten darauf umgestellt
<?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>
Ich habe diesen Agenten neu geladen und denke, dass er jetzt richtig funktioniert. Ich lasse diese Frage immer noch offen, weil ich nicht weiß, was mit meiner vorherigen Liste nicht stimmt.
Abschließend habe ich festgestellt, dass ich den Besitzer der Pliste ändern root:wheel
muss, um sie zu laden.