Ejecutar offlineimap a través de launchd no sobrevive al modo de suspensión en OSX

Ejecutar offlineimap a través de launchd no sobrevive al modo de suspensión en OSX

No estoy muy versado en todas las cosas launchd, pero escribí este plistarchivo que se ejecuta periódicamente offlineimappara 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 KeepAliveopció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 ~/.offlineimaprcno usa la autorefreshopción.

¿Hay algún problema con el plistarchivo?

¡Gracias de antemano!

Respuesta1

Bueno, puede que esté malinterpretando el significado de KeepAlive. Resultacerveza caseradistribuyó un plistarchivo offlineimapque 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.

información relacionada