web-dev-qa-db-fra.com

Comment obtenir la sortie des travaux parvenus lors de la connexion via SSH?

Pour contrôler ce que font mes définitions de travail, j'aimerais que les travaux s'affichent sous forme de texte. Cela ne semble pas être possible lorsque je suis connecté via SSH.

J'ai ce problème avec Natty 11.04, mais je suis convaincu qu'il s'agit d'un problème plus courant.

Un fichier de travail simple que j'utilise (nom_fichier /etc/init/test.conf):

description "test"
start on test
console owner
kill timeout 5
task
script
  /bin/echo Gotcha...
end script

Mon but est de voir le texte "Gotcha ..." en faisant initctl emit test ou initctl start test. Mais ça ne marche pas.

Ce que j'ai essayé jusqu'à présent:

  • "sortie de la console" au lieu de "propriétaire de la console"
  • "exec/bin/echo Gotcha ..." à la place du script ... script de fin
10
Binarus

Comme init (pid 1) exécute le service (qui n'a pas de stdout/stderr) et non votre shell (comme avec les anciens scripts de style /etc/init.d-), il n'existe actuellement aucun moyen de voir le résultat généré. (Cette fonctionnalité est fréquemment demandée et figure dans la liste des tâches à effectuer pour Upstart.)

Pour contourner ce problème, je vous recommande de forcer la redirection de sortie au début du travail lui-même:

script
    exec >/var/log/test.debug 2>&1
    echo Gotcha...
end script
8
Kees Cook

À partir de 12.04 (éventuellement avant), par défaut, Upstart se connectera à un fichier sous/var/log/upstart/avec toute sortie du travail.

Documentation actuelle de Upstart (sur Cookbook)

Vous pouvez ensuite modifier ce fichier pour voir tout le nouveau texte en cours d'écriture dans le fichier.

Par exemple:

tail -f /var/log/upstart/test.log & # tail the output
initctl emit test
15
Dave Butler