3 votes

Besoin d'aide pour dépanner / apprendre launchctl et plist

J'ai toujours été un adepte de la crontab. Récemment, j'ai décidé de passer aux processus launchd d'Apple, et je n'arrive pas à faire fonctionner ma première plist.

  1. En plutil -lint m'indique que la plist est correctement formatée. En fait, elle affiche "OK".

  2. J'ai exécuté manuellement le script bash script et confirmé qu'il fonctionne correctement lorsqu'il est lancé manuellement.

  3. J'ai chargé le fichier à l'aide de launchctl load et j'ai reçu la réponse "déjà chargé" lors de mes tentatives répétées.

Le problème doit se situer au niveau de la définition de ma liste de diffusion. Merci de m'aider à trouver l'erreur.

Je m'attends à ce qu'il fonctionne dans les conditions suivantes :

  • Uniquement lorsque l'utilisateur jaredclemence utilise le système
  • Une fois dès l'ouverture de la session
  • Toutes les 15 minutes ensuite
  • Modifier le répertoire en /Library/WebServer/Documents/medface/ avant d'exécuter le script.

Le fichier plist est le suivant :

<?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>Label</key>
        <string>org.pediatricheartcenter.medface.crons</string>
        <key>User</key>
        <string>jaredclemence</string>
        <key>ProgramArguments</key>
        <array>
                <string>/User/jaredclemence/runMedfaceSchedTasks.batch</string>
        </array>
        <key>WorkingDirectory</key>
        <string>/Library/WebServer/Documents/medface</string>
        <key>StartInterval</key>
        <integer>900</integer>
        <key>RunAtLoad</key>
        <true/>
</dict>
</plist>

Notes :

  • J'ai stocké le fichier dans ~/Library/LaunchAgents/org.pediatricheartcenter.medface.crons.plist
  • Une version précédente du fichier utilisait Program au lieu de ProgramArguments avec un <string> au lieu d'un tableau.

4voto

Jared Clemence Points 171

Launchd écrit les erreurs dans le fichier system.log. À l'aide de la console, j'ai consulté le journal. Là, launchd m'a dit qu'il n'aimait pas mon fichier User valeur de la clé. J'ai supprimé la paire clé-valeur User - jaredclemence et j'ai chargé la liste à nouveau. Il m'a alors indiqué que le programme batch n'existait pas et j'ai alors remarqué l'erreur dans le chemin d'accès au fichier. /User devrait être /Users

En supprimant le paramètre Utilisateur et en corrigeant le chemin d'accès au fichier, j'ai pu résoudre le problème. Maintenant, l'exécution de ps -ef | grep 'runMed' Je vois que le fichier batch est en cours d'exécution.

SUCCÈS !

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