Come creare un servizio su Ubuntu Upstart

20

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

    
posta mecek 30.09.2013 - 16:21

2 risposte

37

Assicurati di essere il 14.04. Ubuntu 16.04 (e sopra) usa systemd, non Upstart.

Uno script Upstart è un file di script posto a /etc/init/ e termina in .conf .

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

Lo script più semplice da avviare con il tuo campione è:

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

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

Se lo script richiede più di una riga di comando, utilizza la sezione script anziché la riga exec :

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

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

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

Quindi prova ad avviarlo e fermarlo:

sudo service myprogram start

Secondo il ricettario upstart , puoi creare pre-start / post-start e pre-stop / post-stop comandi da eseguire.

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

    
risposta data Rael Gugelmin Cunha 16.04.2014 - 14:01
0

Devi creare un parvenu. link

Upstart è (IMHO) un disastro rispetto ai buoni script SysV di init. Upstart è FAR più sforzo con poco vantaggio per il lavoro aggiunto. Detto ciò, sospetto che là fuori ci saranno alcuni difensori arroganti che mi porteranno ad occuparmi di me dichiarando l'ovvio; -)

    
risposta data Andrew 30.09.2013 - 16:35

Leggi altre domande sui tag