web-dev-qa-db-fra.com

Comment déboguer les scripts Upstart?

Pour une raison quelconque, je reçois un erreur lors des mises à niveau de la ventilation , dont la cause est

% Sudo service apport start
start: Job failed to start

Sous sysvinit, je pourrais résoudre ce genre de problème en exécutant par exemple

Sudo sh -x /etc/init.d/whatever start

mais cela ne semble pas mapper vers Upstart. Que devrais-je essayer ensuite?

Il s’avère que il existe une solution de contournement qui laissera l’installation se poursuivre. Mais je suis toujours intéressé par la question générale de savoir comment on pourrait tracer le script.

67
poolie

Toutes les informations suivantes (et une aide bien plus utile de Upstart) proviennent de The Upstart Cookbook . La section 18 couvre le débogage. http://upstart.ubuntu.com/cookbook/#debugging

Dans ce cas particulier de traçage d'une strophe "script" d'un travail Upstart, vous devez ajouter les lignes suivantes juste en dessous du mot "script":

exec 2>>/dev/.initramfs/myjob.log
set -x

La raison de cet emplacement impair est que /dev/.initramfs/ est disponible très tôt au démarrage, avant le chargement du système de fichiers racine, et continue à être disponible après l’amorçage. Je suppose que avec quot, cependant, vous n’avez probablement pas besoin de pour utiliser ce chemin. Pourtant, il est bon de connaître l'option.

Il convient également de noter que tous les scripts sont exécutés avec set -e afin que toute commande qui échoue ferme complètement le script. Ce qui est logique, car il faut être très prudent lorsque vous exécutez des scripts en tant que root.

Je recommande fortement de consulter le livre de recettes Upstart lié ci-dessus en général à quiconque travaille avec des tâches Upstart.

29
Mark Russell

Upstart enregistre l'exécution de votre service dans un fichier journal du même nom dans /var/log/upstart/your-service-name.log. Ça devrait être utile.

110
Muhammad Gelbana