Come creare un servizio su Ubuntu Upstart


21

Ho un programma eseguibile Java che posso eseguire digitando java -jar abc.jarnel terminale. Come posso eseguirlo come servizio? Voglio eseguirlo come un servizio digitando service abc start.


Una risposta più completa è qui: unix.stackexchange.com/questions/1924/… Fondamentalmente, in Ubuntu è possibile creare uno script per /etc/init.d che può avviare / arrestare / riavviare il servizio.
Mr Ed

Risposte:


41

Assicurati di essere su 14.04. Ubuntu 16.04 (e versioni successive) utilizza systemd, non Upstart.

Uno script Upstart è un file di script posizionato in /etc/init/e che termina in .conf.

Richiede 2 sezioni: una per indicare quando iniziare e un'altra con il comando da eseguire.

Lo script più semplice per iniziare con l'esempio è:

# myprogram.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program

Creato come root sotto /etc/init/myprogram.conf.

Se il tuo script richiede più di una riga di comando, utilizza la scriptsezione anziché la execriga:

# myprogram.conf
start on filesystem
script
    /usr/bin/java -jar /path_to/program
    echo "Another command"
end script

Per abilitare il completamento bash per il tuo servizio, aggiungi un link simbolico nella /etc/init.dcartella:

sudo ln -s /etc/init/myprogram.conf /etc/init.d/myprogram

Quindi prova a iniziare e fermalo:

sudo service myprogram start

Secondo il ricettario di avvio , è possibile creare pre-start/ post-starte pre-stop/ post-stopcomandi da eseguire.

Inoltre, ho letto che vuoi verificare se un processo è in esecuzione. Controlla questa domanda e forse usa la pre-startsezione.


1
Forse devi renderlo eseguibile con sudo chmod +x /etc/init.d/myprogram. ATTENZIONE: il tuo metodo di risposta non funziona in Ubuntu 16.04!
juliocesar

2
@juliocesar 16.04 utilizza systemd, non Upstart.
Rael Gugelmin Cunha,

start onnon è una strofa necessaria. Come puoi leggere qui : un simile lavoro può essere controllato solo da un amministratore .
SuB,

@SuB yeap, ma poi il lavoro non si avvierà automaticamente, ed era chiaro che l'autore della domanda voleva qualcosa che agisse come un servizio, cioè avviarsi automaticamente.
Rael Gugelmin Cunha,

Sì. Lo so. ho appena aggiunto un commento per completare la risposta.
SuB,

0

Devi creare un upstart. http://upstart.ubuntu.com/getting-started.html

Upstart è (IMHO) un disastro rispetto ai buoni script di init SysV. Upstart è MOLTO più sforzo con un piccolo vantaggio per il lavoro aggiunto. Detto questo, ho il sospetto che ci saranno alcuni difensori in partenza che mi porteranno al compito per me affermando l'ovvio ;-)


1
È solo un file in /etc/init/yourservice.conf con una riga che indica quando iniziare e un altro per il comando exec. Anche Fedora usa upstart. Inoltre, anche Debian sta cambiando il suo schema iniziale in SystemD, che sarà lo schema Ubuntu in futuro.
Rael Gugelmin Cunha,
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.