Vuoi creare uno script upstart; bisogno di aiuto e consigli


13

Ho bisogno di iniziare e interrompere in modo casuale (per mancanza di una parola migliore nella mia mente) un lavoro. Lo comincio digitando java -jar foo.jare per fermarlo scopro il suo pid e lo uccido. Ucciderlo non causa alcuna perdita di dati o corruzione o altro, solo FYI. È noioso eseguire entrambi questi passaggi perché il primo comando deve essere eseguito da una directory specifica, ovvero /usr/share/jetty(l'uccisione può essere eseguita da qualsiasi luogo).

Quindi stavo pensando a qualcosa di simile

service foo starte service foo stopper avviare e interrompere i servizi. È possibile e, soprattutto, corretto? c'è un'altra soluzione?

Grazie.

Risposte:


13

Sì Upstart è un'opzione abbastanza buona per questo. Basta creare un nuovo file:

sudoedit /etc/init/my-jetty-jar.conf

Puoi cambiare il nome del file come preferisci, ma poi incollarlo:

description     "Run my jetty jar"

# no start option as you might not want it to auto-start
# This might not be supported - you might need a: start on runlevel [3]
stop on runlevel [!2345]

# if you want it to automatically restart if it crashes, leave the next line in
respawn

script
    cd /usr/share/jetty
    su -c "/usb/bin/java -jar /path/to/foo.jar" nobody
end script

Alcune note a riguardo, non sono in sucontatto con nessuno per motivi di sicurezza. Potresti averne bisogno suin un altro account, ma probabilmente non è consigliabile che funzioni come root.


È necessario riavviare per rendere effettive le modifiche? update-rc.dnon ha funzionato /
theTuxRacer il

Non è necessario update-rc.dper iniziare i lavori.
Oli

upstart guarda / etc / init usando inotify, quindi generalmente conosce tutte le modifiche ai file sottostanti. Non c'è bisogno di fare altro che "avviare my-jetty-jar". Oh, e @Oli, puoi sicuramente avere un lavoro senza iniziare. Nota che stop su runlevel [! 2345] potrebbe essere segnalato in futuro come un brutto modo per fermare le cose (dal momento che non garantisce che si fermeranno prima che i filesystem siano smontati)
SpamapS

Sfortunatamente, la tua soluzione non sembra funzionare (più) per Jetty 8 poiché start.jar genera altri processi, che non verranno uccisi con il tuo approccio. Ho creato un'altra domanda per risolvere questo problema: stackoverflow.com/questions/10796242/…
Sebi

4
@Sebi Potrebbe essere necessario solo attaccare expect forklì (prima dell'inizio script).
Oli
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.