Comment puis-je déboguer un Launchd script ne s'exécute pas au démarrage?
J'ai quelques Launchd scripts à partir de l'homebrew. Cependant, je dois exécuter manuellement quand j'ai redémarré mon ordinateur:
launchctl load -w ~/Library/LaunchAgents/com.mysql.mysqld.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>KeepAlive</key>
<true/>
<key>Label</key>
<string>com.mysql.mysqld</string>
<key>Program</key>
<string>/Users/dash/.local/Cellar/mysql/5.1.49/bin/mysqld_safe</string>
<key>RunAtLoad</key>
<true/>
<key>UserName</key>
<string>dash</string>
<key>WorkingDirectory</key>
<string>/Users/dash/.local/var</string>
</dict>
</plist>
J'ai pensé que cela arriverait au démarrage. Ce qui me manque?
- Je ne pense pas que cela aura un effet quelconque (donc, je ne fais pas une réponse), mais essayer de l'exécuter sans l'option "-w" drapeau pour un test (c'est à dire "launchctl charge de ~/Library/LaunchAgents/com.mysql.mysqld.plist"), puis redémarrez. Ou, peut-être essayer le chemin d'accès complet au fichier plist (par exemple, /Utilisateurs/{vous}/Library/LaunchAgents/com.mysql.mysqld.plist). Juste deviner ici.
- Pas vraiment une réponse, mais je suis sûr que LaunchControl vous dire pourquoi.
- Découvrez mon répondre pour un problème similaire.
Vous devez vous connecter pour publier un commentaire.
Meilleure façon que j'ai trouvée pour le débogage, dans votre plist:
Ouvrez la Console d'application, dans "Tous les Messages", vous devriez voir des entrées lorsque votre application échoue ou réussit. Comme ceci:
Le problème que j'ai eu était avec ProgramArguments prend chaque élément de commande comme
<string>
élément dans le tableau.EDIT:
Dans mon cas, la génération d'un simple wrapper pour shell script a fonctionné encore mieux.
Ce script configure la structure de dossiers de base de faire un script shell dans un OS X "app" - https://gist.github.com/mathiasbynens/674099. Ce qui pourrait fonctionner mieux pour votre
mysql -u arg1
commande.Qu'une seule possibilité: Regarder dans le répertoire:
et fine de la "com".apple.launchd.peruser.###" fichier pour votre utilisateur. Ouvrir et voir si il y a une entrée comme:
Si oui, essayez de
<false/>
. Un autre fichier à regarder dans pour la même chose, c'est:<false/>
La commande de démarrage s'attend à ce que le travail Étiquette que c'est de l'argument, de sorte que vous commencer à l'aide de la suite...
Pour arrêter, il suffit de faire la suite...
Une fois que tous vos essais de vous déconnecter puis de la charger ou si votre fichier plist est dans le dossier de la Bibliothèque de type de la suivante...
Essayer de le renommer. Changer le nom du fichier à:
et la section de l'Étiquette dans le plist pour:
Si vous enregistrez une copie de sauvegarde, assurez-vous de déplacer à l'extérieur de votre ~/Library/LaunchAgents/répertoire.
Enfin, au lieu d'utiliser launchctl à charger, il suffit de vous déconnecter et vous reconnecter. Qui permettra de launchd ramasser à partir de votre "LaunchAgents" répertoire par lui-même et de prendre une autre variable (c'est à dire launchctl) le mix.
Pour moi, d'autres solutions jusqu'à présent ne m'aide pas. Mon problème est un peu difficile à déboguer, parce que le fichier plist est correct, le script est en cours d'exécution fine, seule, dans un terminal. Tout semble parfait, mais ne fonctionne pas.
J'ai vérifié le fichier journal par l'exécution de
Puis par de chargement et de déchargement à nouveau le service avec les commandes:
J'ai trouvé un message d'erreur de fichier journal:
Ce que cela signifie vraiment? Je n'ai pas google. Mais, je pense que c'est parce que je n'ai pas ajouter
#!/bin/bash
au début du script shell. Parce que je suis paresseux pour ajouter cette ligne parfois.Après l'ajout de l'en-tête, tout fonctionne bien.