ce n'launchd statut 78 veux dire?? pourquoi mon agent utilisateur ne fonctionne pas??
Je veux courir à l'unisson le service de synchronisation de l'exécution en arrière-plan chaque fois que je me connecte. Mais le code de statut de mon agent est 78
. Je ne sais pas pourquoi, j'ai essayé quelques corrigé en ligne, mais il ne fonctionne tout simplement pas.
Quel est le problème?? ci-dessous le fichier plist pour mon service.
<?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>syncmyproject</string>
<key>StandardOutPath</key>
<string>/var/log/syncmyproject.log</string>
<key>StandardErrorPath</key>
<string>/var/log/syncmyproject.log</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>Debug</key>
<true/>
<key>EnableGlobbing</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/unison</string>
<string>-auto</string>
<string>-batch</string>
<string>-repeat watch</string>
<string>~/home/project</string>
<string>~/project</string>
</array>
</dict>
</plist>
- Vous pouvez
grep
ce fichier pour d'éventuels indices quant à ce qui est erroné:/var/log/system.log
Vous devez vous connecter pour publier un commentaire.
J'ai lu
man launchctl
, trouver 78 signifiefunction not implemented
. Il ne l'aide pas beaucoup.Enfin je le faire fonctionner, en fait il y avait des erreurs dans le fichier plist, je vous recommande d'installer le
brew cask install launchcontrol
, qui est un outil graphique pour la launchctl, il peut aider à détecter les erreurs et les problèmes de prise de vue.#!/bin/sh
WorkingDirectory
peut provoquer un code d'état de78
ainsi.J'ai trouvé l'erreur a eu à faire avec des autorisations.
J'ai essayé de rediriger les erreurs et les journaux de la
/var/log
répertoire qui mon utilisateur n'est pas en mesure d'écrire.Modification du chemin d'accès à quelque chose d'où mon utilisateur a des autorisations adéquates pour r+w, il fixe.
Aussi, être prudent lors du chargement de votre LaunchAgents. Ne pas utiliser sudo pour charger un fichier plist si vous êtes dans le ~/Library/LaunchAgents répertoire.
[Couru dans ce problème, de sorte que la documentation de ce que j'ai trouvé]
"78" est la dernière sortie du code du travail que vous êtes en cours d'exécution. De
man launchctl
:I. e. vous avez besoin de lire la documentation (ou code source) pour le travail que vous êtes de départ. (Dans mon cas, mysqld)
Il est intéressant de noter que "78" est mentionné comme un standard code de sortie sur Linux, indiquant une erreur de configuration. Afin de prendre un coup d'oeil à votre configuration de travail (et les journaux d'erreur?) pour voir si vous avez quelque chose de mal configuré.
Voici ce qui m'a surpris: Dans Mac OS X, vous pouvez exécuter des scripts shell de ligne de commande, même si il y a un "script" dans le fichier.
Toutefois, lorsque vous exécutez de launchd vous avez à dire à quel binaire qui doit exécuter le script.
A supposer que lorsque vous exécutez à partir de la ligne de commande, il utilise juste la coque actuelle (dans mon cas, bash), mais lors de l'exécution de launchd il n'y a pas de "autour de script".
J'ai ajouté
la première ligne dans le fichier de script, et puis il a travaillé.
Similaire à ci-dessus, j'ai été d'obtenir un statut 78 parce que j'avais lien symbolique dans mon chemin du script. La solution était d'utiliser le chemin absolu.
J'ai eu cette erreur lors de l'exécution du mono pour démarrer un serveur web local. S'avère que la solution était de ne pas utiliser le mono chemin d'accès donné par "qui mono" (qui est un lien symbolique:
/Library/Frameworks/Mono.framework/Versions/Current/Commands/mono
), mais l'emplacement réel de l'exe (dans mon cas/Library/Frameworks/Mono.framework/Commands/mono
).