Ich kenne mich nicht in allen Dingen besonders gut aus launchd
, aber ich habe diese plist
Datei geschrieben, die regelmäßig ausgeführt wird offlineimap
, um neue E-Mails von IMAP-Servern abzurufen:
<?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>net.dpo.offlineimap</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/offlineimap</string>
<string>-o</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>ProcessType</key>
<string>Background</string>
<key>StartInterval</key>
<integer>1800</integer>
</dict>
</plist>
Die Datei befindet sich im ~/Library/LaunchAgents/net.dpo.offlineimap.plist
.
Das Problem ist, dass der Prozess nicht zu aktivieren scheint, wenn ich den Computer aus dem Ruhezustand wecke.
$ launchctl stop net.dpo.offlineimap
$ launchctl start net.dpo.offlineimap
aktiviert es erneut, aber das scheint die KeepAlive
Option zunichte zu machen.
Ich habe versucht,
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<true/>
<key>NetworkState</key>
<true/>
</dict>
aber ich beobachte das gleiche Verhalten. Ich verwende OSX 10.9. Meins ~/.offlineimaprc
verwendet die autorefresh
Option nicht.
Stimmt etwas mit der plist
Datei nicht?
Dank im Voraus!
Antwort1
Nun, vielleicht verstehe ich die Bedeutung von falsch KeepAlive
. Es stellt sich herausSelbstgebrauteseine plist
Datei verteilt offlineimap
, die diesen Job erledigt:
<?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>KeepAlive</key>
<false/>
<key>Label</key>
<string>homebrew.mxcl.offline-imap</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/opt/offline-imap/bin/offlineimap</string>
</array>
<key>StartInterval</key>
<integer>300</integer>
<key>RunAtLoad</key>
<true />
<key>StandardErrorPath</key>
<string>/dev/null</string>
<key>StandardOutPath</key>
<string>/dev/null</string>
</dict>
</plist>
Der Daemon überlebt jetzt den Ruhezustand.