Come diagnosticare gli errori Upstart?


8

Ho un file conf Upstart in / etc / init che inizia bene se lo avvio manualmente in questo modo:

sudo initctl start myconf

Se lo eseguo senza il comando sudo ottengo l'errore name = (unset) error, che è dovuto ai privilegi dell'utente, ma questo non dovrebbe essere il problema quando il lavoro viene inizializzato all'avvio del sistema quando Upstart prende il via giusto? (perché è tutto gestito dalla radice).

Il contenuto dello script è:

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

exec /spatial/server_init.sh

... dove server_init.sh esegue un server basato su script Python. Quando controllo lo stato dello script subito dopo il login alla shell, viene visualizzato il messaggio stop / wait. Ho anche provato il file conf con "start on net-device-up" ma non cambia nulla. C'è un modo per vedere il registro di sistema Upstart o qualcosa di simile che potrebbe aiutarmi a eseguire il debug del problema.

Grazie


A volte se hai un chdirtuo script upstart e quella directory non esiste, non verrà scritto alcun registro e otterrai il messaggio criptico:start: Job failed to start
knownasilya

Risposte:


13

Provare:

/var/log/upstart/JOBNAME.log

Potresti voler considerare di convertirlo in un'attività mentre esegui il debug.

start on start spaziale

compito

exec /spatial/server_init.sh

quindi dalla console:

initctl emette space-start
stato di avvio spazio-inizio

Ci proverò anche, grazie. Presumo che questo effettivamente generi problemi specifici di Upstart; include anche errori di sintassi nei file conf?
U2ros,

È qui che reindirizza stdout / err, quindi è meglio che sia prolisso.
ppetraki,

1

Va bene, trovato in un modo, ma funziona solo se l'errore si verifica nel programma che viene eseguito dallo script (e se quel programma ovviamente restituisce messaggi di errore), non Upstart stesso, ma questo è ciò di cui avevo bisogno in questo caso. Quello che ho fatto è stato reindirizzare l'output del programma su un file di registro come questo:

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

Per quanto riguarda l'altro ho scoperto che puoi aumentare la verbosità di Upstart, quindi se ne avrò bisogno, inizierò da lì.


0
  1. Verificare che esista la directory upstart: / var / log / upstart (in caso contrario, creare la directory)
  2. Controlla la tua versione upstart da: versione initctl o upstart della politica apt-cache

    Per tutte le versioni di Upstart precedenti alla v1.4, il valore predefinito per console era nessuna console . A partire da Upstart 1.4, il valore predefinito è il registro della console .

  3. Aggiungi il log della console all'inizio (prima della fase dello script)
  4. Il tuo registro sarà su: /var/log/upstart/"upstart-JOBNAME".log

Esempio :

registro della console

copione

exec /spatial/server_init.sh

fine script

Registro console : collega l'input standard a / dev / null. L'output standard e l'errore standard sono collegati a un'estremità di uno pseudo-terminale in modo tale che qualsiasi output di processo venga automaticamente registrato in un file nella directory / var / log / upstart / per lavori di sistema e $ XDG_CACHE_HOME / upstart / (o $ HOME /. cache / upstart / se $ XDG_CACHE_HOME non è impostato) per i lavori di sessione.

Console nessuna : collega l'input standard del lavoro, l'output standard e i descrittori di file di errore standard a / dev / null.

Per ulteriori informazioni sulla console, consultare il link seguente:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.