Pour info, j'ai essayé ici et cela semble fonctionner pour moi. Chaque fois que j'ai ajouté manuellement quelque chose à /Library/Logs/CrashPlan/history.log.0, le script s'est déclenché.
Il ne s'agit donc pas vraiment d'une réponse, mais plutôt d'une série de conseils pour le débogage. launchd
:
Quelques conseils pour diagnostiquer launchd :
1) Utilisez le stdout
y stderr
et voir si quelque chose y est enregistré. Vous pouvez faire cela en ajoutant ces lignes à votre fichier com.crashplan.status.plist
fichier.
<key>StandardErrorPath</key>
<string>/tmp/com.crashplan.status.stderr.log</string>
<key>StandardOutPath</key>
<string>/tmp/com.crashplan.status.stdout.log</string>
(Si plusieurs personnes utilisent le même Mac, vous voudrez peut-être utiliser un autre chemin que /tmp/, mais si vous êtes le seul à l'utiliser, cet endroit est aussi bon qu'un autre).
2) Avec le numéro 1, vous pouvez également ajuster votre script (/Users/Rax/Library/Automation/Shell/crashplan_status) pour inclure des informations de débogage telles que le moment où il a commencé et celui où il s'est terminé. Cela peut être aussi simple que quelque chose comme ceci ajouté près du sommet du script :
echo "$0: started at `date`"
et quelque chose comme ceci vers la fin
echo "$0: finished at `date`"
3) Avec le point 2, vous pouvez également utiliser quelque chose comme terminal-notifier pour vous montrer quand votre script est appelé, du moins jusqu'à ce que vous ayez dépassé le stade du débogage.
4) Si rien de tout cela ne vous aide, vous devriez vérifier l'état de sortie de toutes les commandes que vous appelez en crashplan_status
et voyez si elles se terminent correctement. Par exemple, disons que vous exécutez echo
dans votre crashplan_status
5) Votre environnement est-il en launchd
différent de votre coquille d'une certaine manière ? La meilleure façon de le vérifier est d'ajouter cette ligne en haut de votre launchd script :
/usr/bin/printenv | /usr/bin/open -ef
ce qui entraînera la printenv
à envoyer à la sortie standard et à ouvrir les résultats dans TextEdit.
Le problème d'environnement le plus courant que je rencontre est que le $PATH n'est pas correctement défini pour launchd. Il est généralement défini dans vos fichiers d'initialisation de l'interpréteur de commandes tels que .bashrc et hérité par tous les scripts de l'interpréteur de commandes que vous exécutez depuis le Terminal, mais ne le sera pas pour launchd
.
Vous pouvez voir le chemin que launchd
est utilisé par :
launchctl getenv PATH
Si vous voulez la définir, vous pouvez le faire en
launchctl setenv PATH
par exemple, pour mon système, ce serait :
launchctl setenv /Users/luomat/Dropbox/bin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
Si vous ne voulez pas avoir à vous rappeler de définir ce paramètre à chaque fois que vous démarrez votre ordinateur, vous pouvez l'ajouter à la liste des éléments suivants /etc/launchd.conf
en ajoutant une ligne comme celle-ci :
setenv PATH /Users/luomat/Dropbox/bin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
évidemment changer cela pour correspondre à votre système. Aussi, ne soyez pas surpris si /etc/launchd.conf
n'existe pas sur votre système. Vous devrez peut-être le créer. Pour ce faire, je recommande un simple :
sudo pico -w /etc/launchd.conf
et lorsque vous avez terminé l'édition, appuyez sur control + X et suivez les instructions pour enregistrer les modifications.