¿Cómo diagnosticar errores de arranque?

8

Tengo un archivo de configuración Upstart en / etc / init que comienza bien si lo inicio manualmente de esta manera:

sudo initctl start myconf

Si lo ejecuto sin el comando sudo obtengo el error name = = (unset) error, que se debe a los privilegios del usuario, pero ese no debería ser el problema cuando el trabajo se inicializa en el arranque del sistema cuando se inicia Upstart, ¿verdad? (porque eso es todo ejecutado por la raíz).

El contenido del guión es:

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

exec /spatial/server_init.sh

... donde server_init.sh ejecuta un servidor basado en script de Python. Cuando verifico el estado de la secuencia de comandos justo después de iniciar sesión en shell, dice detener / esperar. También probé el archivo conf con "start on net-device-up" pero nada cambia. ¿Hay alguna manera de ver el registro del sistema Upstart o algo similar que pueda ayudarme a depurar el problema?

Gracias

U2ros
fuente
A veces, si tiene un chdirscript de inicio y ese directorio no existe, no se escribirá ningún registro y obtendrá el mensaje críptico:start: Job failed to start
conocidoasilya

Respuestas:

13

Tratar:

/var/log/upstart/JOBNAME.log

Es posible que desee considerar convertirlo en una tarea mientras lo depura.

comenzar en inicio espacial

tarea

exec /spatial/server_init.sh

luego desde la consola:

initctl emite inicio espacial
estado initctl inicio espacial
ppetraki
fuente
También lo intentaré, gracias. Supongo que esto realmente genera problemas específicos de Upstart; ¿incluye errores de sintaxis en los archivos conf también?
U2ros
Aquí es donde se redirecciona stdout / err, por lo que es mejor que sea detallado.
ppetraki
1

De acuerdo, encontré una forma, pero solo funciona si el error ocurre en el programa que está ejecutando el script (y si ese programa, por supuesto, devuelve mensajes de error), no Upstart en sí, pero eso es lo que necesitaba en este caso. Lo que hice fue redirigir la salida del programa a un archivo de registro como este:

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

En cuanto al otro que descubrí, puede aumentar la verbosidad de Upstart, por lo que si lo necesito, comenzaré desde allí.

U2ros
fuente
0
  1. Compruebe que exista el directorio de inicio: / var / log / upstart (si no, cree el directorio)
  2. Verifique su versión de arranque por: versión de initctl o arranque de política apt-cache

    Para todas las versiones de Upstart anteriores a v1.4, el valor predeterminado para la consola era console none . A partir de Upstart 1.4, el valor predeterminado es el registro de la consola .

  3. Agregue el registro de la consola en su inicio (antes de la fase de script)
  4. Su registro estará en: /var/log/upstart/"upstart-JOBNAME".log

Ejemplo:

registro de consola

guión

exec /spatial/server_init.sh

fin de guión

Registro de consola : conecta la entrada estándar a / dev / null. La salida estándar y el error estándar están conectados a un extremo de un pseudo-terminal, de modo que cualquier salida de trabajo se registra automáticamente en un archivo en el directorio / var / log / upstart / para System Jobs y $ XDG_CACHE_HOME / upstart / (o $ HOME /. cache / upstart / if $ XDG_CACHE_HOME no está configurado) para trabajos de sesión.

Consola none : conecta la entrada estándar del trabajo, la salida estándar y los descriptores de archivos de error estándar a / dev / null.

Para obtener más información sobre la consola, consulte el siguiente enlace:

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

zachlaniado
fuente