No estoy muy versado en todas las cosas launchd
, pero escribí este plist
archivo que se ejecuta periódicamente offlineimap
para recuperar correo nuevo de los servidores IMAP:
<?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>
El archivo se encuentra en ~/Library/LaunchAgents/net.dpo.offlineimap.plist
.
El problema es que el proceso no parece reactivarse cuando despierto la computadora del modo de suspensión. Correr
$ launchctl stop net.dpo.offlineimap
$ launchctl start net.dpo.offlineimap
lo reactiva, pero eso parece anular la KeepAlive
opción.
Intenté usar
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<true/>
<key>NetworkState</key>
<true/>
</dict>
pero observo el mismo comportamiento. Estoy en OSX 10.9. Mi ~/.offlineimaprc
no usa la autorefresh
opción.
¿Hay algún problema con el plist
archivo?
¡Gracias de antemano!
Respuesta1
Bueno, puede que esté malinterpretando el significado de KeepAlive
. Resultacerveza caseradistribuyó un plist
archivo offlineimap
que hace el trabajo:
<?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>
El demonio ahora sobrevive al sueño.