Upstart non vede la mia nuova sceneggiatura


27

Ho aggiunto un nuovo script /etc/init/chiamato minecraft.confche contiene lo script:

start on startup
stop on shutdown
respawn
respawn limit 20 5

script
  export HOME="/root"
  exec /root/minecraft/start.sh 2>&1 >> /var/log/minecraft.log
end script

post-start script
   echo "minecraft started"

Quando provo start minecraftottengo l'errore:start: Unknown job: minecraft

Ho provato a correre initctl liste il mio lavoro in Minecraft non è elencato. Ho provato a correre initctl reload-configuratione non fa alcuna differenza.

Altri lavori elencati per initctl listfunzionano correttamente con avvio, arresto e riavvio.

Perché upstart non vedrà il mio nuovo script?



Questa potrebbe essere una domanda stupida ma ... non potrebbe essere la tua sceneggiatura /etc/init.d/?
Wolfer,

@snow grazie, ma l'ho già letto e ho ancora il problema.
Jasarien,

@Wolfer secondo la guida introduttiva di upstart, dice "Una volta felice, posiziona i file /etc/inite ora sei pronto per riavviare e utilizzare upstart."
Jasarien,

Ho provato a riprodurre il problema, ma senza successo. Copio il tuo codice incollato su /etc/init/minecraft.conf ed emesso sudo start minecraftsenza problemi. Ecco il contenuto del file di registro ~$ sudo cat /var/log/upstart/minecraft.log minecraft started /proc/self/fd/9: 3: exec: /root/minecraft/start.sh: not found minecraft startedPuoi fornire maggiori dettagli sulla versione di Ubuntu che stai utilizzando e qualche informazione utile da syslog?
Goran Miskovic,

Risposte:


12

Controllare i log di avvio (è presente /var/log/syslog) durante il ricaricamento della configurazione mediante initctl reload-configuration. Se si verifica un errore di sintassi, verrà visualizzato lì. Questo è di solito il motivo per cui non è possibile utilizzare la nuova configurazione di avvio.


11

Un modo semplice per controllare la sintassi dello script è con il seguente comando:

init-checkconf -d /etc/init/service_name.conf

Ho scoperto che anche con un file Upstart valido se il file non esisteva quando il server è stato avviato l'ultima volta, devo riavviare il server affinché Upstart possa vedere il file.


9

Mi sento un po 'stupido ... Ma eccolo qui:

Ho perso la strofa "end script" sin dalla fine dello script upstart ...

post-start script
   echo "minecraft started"

avrebbe dovuto essere

post-start script
   echo "minecraft started"
end script

Non sono sicuro del motivo per cui ha funzionato per @schkovich senza il end script, però ...


2
Perché ho aggiunto la stanza degli script di fine. Completamento (automatico) del codice automatico incorporato. :(
Goran Miskovic,

Ho riscontrato lo stesso problema, ma in modo esasperante, in / var / log non appare nulla e initctl reload-configuration --verbose è silenzioso.
Neil McGill,

4

Nel mio caso era un authorcampo vuoto , come questo:

author ""

Ha funzionato solo dopo aver aggiunto qualcosa tra virgolette.

# initctl reload-configuration

stava anche lanciando /etc/init/servicename.conf:2: Expected token syslog invece di stdout . Troppo occupato per presentare una segnalazione di bug per un pacchetto morente.


3

Forse non applicabile a questo in modo specifico, ma vale la pena ricordare: se si modifica un file di configurazione Upstart per un servizio in esecuzione, l'esecuzione restartNON ricarica la configurazione. Devi eseguire stope startrendere effettive le nuove modifiche.

http://upstart.ubuntu.com/cookbook/#restart

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.