2 votes

Comment exécuter une commande shell en une ligne à l'aide de launchd ?

Vous trouverez ci-dessous un exemple de ce que j'essaie de faire :

    <?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>fooLabel</string>
        <key>Something</key>
        <string>/bin/bash foo -arg 1 -arg 2 &</string>
</dict> 
</plist>

Le plist a été ajouté à /Library/LaunchDaemons Il devrait donc s'exécuter au démarrage pour tous les utilisateurs, non ? Le site les autorisations de fichiers appropriées ont été fixés.

Le script doit s'exécuter en tant que processus d'arrière-plan et nécessite également une connectivité réseau. Comment puis-je m'assurer que le plist ne se lance pas avant que l'accès à Internet soit établi ?

3voto

Alex Points 8703

Vous voulez inclure cette vérification de l'état du réseau :

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

De plus, vous devez probablement passer les arguments de votre programme correctement :

<key>ProgramArguments</key>
<array>
    <string>/usr/local/bin/binaryname</string>
    <string>arg1</string>
    <string>arg2</string>
</array>

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X