web-dev-qa-db-fra.com

Comment vérifier si launchd a démarré le script?

J'ai configuré le launchd pour démarrer une commande à 18 heures tous les jours sur mon mac pro, mais cela ne fonctionnait pas.

Je veux vérifier si le launchd a exécuté la commande. J'ai essayé la console système, je n'ai rien trouvé de valable.

ma version mac os est mac os x 10.8.3

Mon fichier plist:

<?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>mytask</string>
    <key>Program</key>
    <string>/opt/local/bin/node</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/xxx/My/task.js</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>18</integer>
        <key>Minute</key>
        <integer>0</integer>
    </dict>
    <key>StandardOutPath</key>
    <string>/Users/xxx/launchd.stdout.log</string>
    <key>StandardErrorPath</key>
    <string>/Users/xxx/launchd.stderr.log</string>
</dict>
</plist>
25
hywl51

Vous avez défini StartCalendarInterval, donc le travail a été exécuté lors de son chargement et il sera exécuté tous les jours à 18h00.

Recherchez launchd (8) pour connaître son état de sortie:

launchctl list | grep mytask

cela retournera une ligne ligne ceci:

<pid> <status> mytask

Lorsque pid est un nombre, le travail est en cours d'exécution. Sinon, jetez un œil à status, qui est le code de sortie du programme, noeud dans votre cas. Un code de sortie de 0 signifie que le programme s'est terminé avec succès ou qu'il n'a pas encore été démarré. Les nombres positifs sont renvoyés pour les erreurs de programme, tandis que les nombres négatifs signifient que le travail s'est terminé en raison d'un signal.

Je suppose que le travail a échoué. Vous voudrez peut-être vérifier la sortie/erreur standard du programme. Spécifiez StandardOutPath et StandardErrorPath pour ce faire. Le contenu de ces fichiers vous expliquera probablement pourquoi le programme a échoué.

28
LCC