¿Cómo obtener resultados de trabajos de inicio cuando se inicia sesión a través de SSH?

10

Para controlar lo que están haciendo mis definiciones de trabajo, me gustaría ver la salida de texto de los trabajos. Eso no parece ser posible cuando estoy conectado a través de SSH.

Tengo este problema con Natty 11.04, pero estoy convencido de que es más común.

Un archivo de trabajo simple que uso (nombre de archivo /etc/init/test.conf):

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

Mi objetivo es ver el texto "Gotcha ..." al hacer initctl emit testo initctl start test. Pero eso no funciona.

Lo que he probado hasta ahora:

  • "salida de consola" en lugar de "propietario de consola"
  • "exec / bin / echo Gotcha ..." en lugar de script ... final script
Binarus
fuente

Respuestas:

8

Dado que init (pid 1) está ejecutando el servicio (que no tiene stdout / stderr) y no su shell (como con los /etc/init.dscripts de estilo antiguo ), actualmente no hay forma de ver la salida que se genera. (Esta característica se solicita con frecuencia y está en la lista de cosas que hacer para Upstart).

Para evitar esto, recomiendo forzar la redirección de salida al comienzo del trabajo en sí:

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

A partir de 12.04 (posiblemente antes), de forma predeterminada, el sistema de inicio ascendente se registrará en un archivo en / var / log / upstart / con cualquier salida del trabajo

Documentación actual de Upstart (en Cookbook)

Luego puede seguir ese archivo para ver todo el texto nuevo que se está escribiendo en el archivo

Por ejemplo:

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