Sous OS X 10.11 (El Capitan), vous pouvez utiliser sudo launchctl debug --stdout --stderr
pour activer la journalisation ponctuelle, si vous ne souhaitez pas suivre l'option du système de fichiers suggérée par @peter.
Beaucoup de choses sont différentes dans l'implémentation actuelle de launchctl
, et le est plutôt étrange. Par exemple, supposons que j'ai un service local que je configure à ~/Library/LaunchAgents/dev.localmon.plist
, qui a l'étiquette dev.localmon
. Son est gui/$UID/dev.localmon
, où $UID
est votre identifiant utilisateur, que votre terminal interprétera pour vous.
Donc en supposant que mon service dev.localmon
plantait au démarrage (ce qu'il faisait), je pourrais appeler la commande suivante pour avoir launchctl
rediriger la sortie standard et d'erreur du processus dans mon terminal la prochaine fois (et seulement la prochaine fois) que le service démarre :
sudo launchctl debug gui/$UID/dev.localmon --stdout --stderr
Comme cela bloque avec les TTYs ouverts et prêts, allez dans un autre terminal et exécutez :
launchctl start dev.localmon
# start est une commande héritée et n'utilise pas la nouvelle notation de service cible
Ensuite, de retour dans le premier terminal, vous devriez voir la sortie. (De manière étrange, elle ne se ferme pas lorsque le processus du service se termine, vous devrez donc faire Ctrl-C.)
Au fait, une fois que vous avez corrigé votre fichier de configuration avec n'importe quel chemin d'accès ou environnement qui cassait le service auparavant, vous devrez toujours utiliser l'ancienne commande launchctl unload ~/Library/LaunchAgents/dev.localmon.plist && launchctl load ~/Library/LaunchAgents/dev.localmon.plist
en deux étapes car la sous-commande uncache
prétendue de la documentation a l'effet suivant :
Commande n'est pas encore implémentée.
Houra pour la stratégie de sortie post-Jobs d'Apple : "Avancer rapidement et casser des choses"