Comment diagnostiquer les erreurs Upstart?

8

J'ai un fichier de conf Upstart dans / etc / init qui démarre bien si je le démarre manuellement comme ceci:

sudo initctl start myconf

Si je l'exécute sans la commande sudo, j'obtiens l'erreur name = = (unset), qui est due aux privilèges de l'utilisateur, mais cela ne devrait pas être le problème lorsque le travail est initialisé au démarrage du système lorsque Upstart démarre, n'est-ce pas? (parce que tout est géré par la racine).

Le contenu du script est:

start on runlevel [2345]
stop on runlevel [^2345]

exec /spatial/server_init.sh

... où server_init.sh exécute un serveur basé sur un script python. Lorsque je vérifie l'état du script juste après ma connexion au shell, il indique stop / wait. J'ai également essayé le fichier conf avec "start on net-device-up" mais rien ne change. Existe-t-il un moyen de voir le journal système Upstart ou quelque chose de similaire qui pourrait m'aider à déboguer le problème.

Merci

U2ros
la source
Parfois, si vous en avez un chdirdans votre script upstart et que ce répertoire n'existe pas, aucun journal ne sera écrit et vous obtiendrez le message start: Job failed to start
crypté

Réponses:

13

Essayer:

/var/log/upstart/JOBNAME.log

Vous voudrez peut-être envisager de le convertir en tâche pendant que vous le déboguez.

commencer sur spatial-start

tâche

exec /spatial/server_init.sh

puis depuis la console:

initctl émet spatial-start
initctl status spatial-start
ppetraki
la source
Je vais également lui donner un coup de feu, merci. Je suppose que cela génère des problèmes spécifiques à Upstart; inclut-il également des erreurs de syntaxe dans les fichiers de conf?
U2ros
C'est là que stdout / err est redirigé, il vaut donc mieux être verbeux.
ppetraki
1

D'accord, trouvé dans un sens, mais cela ne fonctionne que si l'erreur se produit dans le programme exécuté par le script (et si ce programme renvoie bien sûr des messages d'erreur), pas Upstart lui-même, mais c'est ce dont j'avais besoin dans ce cas. J'ai redirigé la sortie du programme vers un fichier journal comme celui-ci:

exec /spatial/server_init.sh >> /spatial/ogc.log 2>&1

Quant à l'autre, j'ai découvert que vous pouvez augmenter la verbosité Upstart, donc si j'en ai besoin, je vais commencer à partir de là.

U2ros
la source
0
  1. Vérifiez que le répertoire upstart existe: / var / log / upstart (sinon, créez le répertoire)
  2. Vérifiez votre version upstart par: la version initctl ou la politique apt-cache upstart

    Pour toutes les versions d'Upstart antérieures à la version 1.4, la valeur par défaut de la console était console none . Depuis Upstart 1.4, la valeur par défaut est le journal de la console .

  3. Ajoutez le journal de la console à votre démarrage (avant la phase de script)
  4. Votre journal sera à: /var/log/upstart/"upstart-JOBNAME".log

Exemple :

journal de la console

scénario

exec /spatial/server_init.sh

script de fin

Journal de la console - Connecte l'entrée standard à / dev / null. La sortie standard et l'erreur standard sont connectées à une extrémité d'un pseudo-terminal de sorte que toute sortie de travail est automatiquement enregistrée dans un fichier dans le répertoire / var / log / upstart / pour les travaux système et $ XDG_CACHE_HOME / upstart / (ou $ HOME /. cache / upstart / if $ XDG_CACHE_HOME is not set) for Session Jobs.

Console aucune - Connecte l'entrée standard, la sortie standard et les descripteurs de fichiers d'erreur standard à / dev / null.

Pour plus d'informations sur la console, consultez le lien ci-dessous:

http://upstart.ubuntu.com/cookbook/#console-log

zachlaniado
la source