KeepAlive avec NetworkState ne fonctionne pas pour l'agent


0

J'essaie d'exécuter automatiquement un script Python tous les jours, mais cela nécessite une connexion Internet (pour envoyer des courriels, etc.). J'ai donc fixé la date et l'heure auxquelles il doit être exécuté, mais s'il n'y a pas de réseau disponible, je souhaite qu'il soit exécuté dès qu'il trouve un réseau. Je pensais que ce qui suit ferait exactement ce dont j'ai besoin:

<?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>com.example</string>

    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/python</string>
        <string>/path/to/my/script.py</string>
    </array>

    <key>StartCalendarInterval</key>
    <dict>
      <key>Hour</key>
      <integer>10</integer>
      <key>Minute</key>
      <integer>30</integer>
    </dict>

    <key>KeepAlive</key>
    <dict>
      <key>NetworkState</key>
      <true/>
    </dict>

  </dict>
</plist>

Cela fonctionne bien lorsque j’ai une connexion Internet à 10h30, mais lorsque je n’ai pas de réseau disponible mais que je ne le récupère qu’à, disons, 11h00, il n’exécute pas le script et ne fait rien pour le reste du processus. journée.

Qu'ai-je fait de mal?

Merci beaucoup,

Réponses:


1

Consultez la page de manuel ( man launchd.plist) pour voir si NetworkState est implémenté.

Pour moi, sur macOS Mojave, ce n'est pas:

KeepAlive <boolean or dictionary of stuff>

This optional key is used to control whether your job is to be kept continuously running
or to let demand and conditions control the invocation. The default is false and therefore
only demand will start the job. The value may be set to true to unconditionally keep the
job alive. Alternatively, a dictionary of conditions may be specified to selectively control
whether launchd keeps a job alive or not. If multiple keys are provided, launchd ORs them,
thus providing maximum flexibility to the job to refine the logic and stall if necessary.
If launchd finds no reason to restart the job, it falls back on demand based invocation.
Jobs that exit quickly and frequently when configured to be kept alive will be throttled
to conserve system resources.

    NetworkState <boolean>
    This key is no longer implemented as it never acted how most users expected.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.