Não sou muito versado em tudo, launchd
mas escrevi este plist
arquivo que é executado periodicamente offlineimap
para buscar novos e-mails de 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>
O arquivo está localizado em ~/Library/LaunchAgents/net.dpo.offlineimap.plist
.
O problema é que o processo parece não acordar quando eu desperto o computador do modo de suspensão. Correndo
$ launchctl stop net.dpo.offlineimap
$ launchctl start net.dpo.offlineimap
o reativa, mas isso parece anular a KeepAlive
opção.
Eu tentei usar
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<true/>
<key>NetworkState</key>
<true/>
</dict>
mas observo o mesmo comportamento. Estou no OSX 10.9. O meu ~/.offlineimaprc
não usa a autorefresh
opção.
Há algo de errado com o plist
arquivo?
Desde já, obrigado!
Responder1
Bem, posso estar entendendo mal o significado de KeepAlive
. Acontece queCerveja caseiradistribuiu um plist
arquivo offlineimap
que faz o trabalho:
<?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>
O daemon agora sobrevive ao sono.