Esegui il file jar java su un server come processo in background

Ho bisogno di eseguire un jar java nel server per comunicare tra due applicazioni. Ho scritto due script di shell per eseguirlo, ma una volta avviato lo script non posso arrestare / terminare il processo. Se premo Ctrl + C o chiudo la console, il server si spegne. Qualcuno potrebbe aiutarmi a modificare questo script per funzionare come un normale server?

#!/bin/sh java -jar /web/server.jar echo $! #> startupApp.pid 

Puoi provare questo:

 #!/bin/sh nohup java -jar /web/server.jar & 

Il simbolo &, cambia il programma in modo che venga eseguito in background.

L’utilità nohup esegue il comando passato come argomento eseguito in background anche dopo la disconnessione.

Se stai usando Ubuntu e hai “Upstart” (http://upstart.ubuntu.com/).puoi provare questo:

Crea /var/init/yourservice.conf

con il seguente contenuto

 description "Your Java Service" author "You" start on runlevel [3] stop on shutdown expect fork script cd /web java -jar server.jar >/var/log/yourservice.log 2>&1 emit yourservice_running end script 

Ora puoi emettere il service yourservice start il tuo service yourservice start e service yourservice stop comandi di service yourservice stop . Puoi tail /var/log/yourservice.log per verificare che funzioni.

Se vuoi solo eseguire il tuo jar dalla console senza eseguire il hogging della finestra della console, puoi semplicemente:

 java -jar /web/server.jar > /var/log/yourservice.log 2>&1 

Systemd che ora funziona nella maggior parte delle distro

Passo 1:

Trova i tuoi servizi definiti dall’utente che erano in /usr/lib/systemd/system/

Passo 2:

Crea un file di testo con il tuo editor di testo preferito chiamalo whatever_you_want.service

Passaggio 3:

Metti il ​​seguente modello nel file whatever_you_want.service

 [Unit] Description=webserver Daemon [Service] ExecStart=/usr/bin/java -jar /web/server.jar User=user [Install] WantedBy=multi-user.target 

Passaggio 4:

Esegui il tuo servizio
come super utente

 $ systemctl start whatever_you_want.service # starts the service $ systemctl enable whatever_you_want.service # auto starts the service $ systemctl disable whatever_you_want.service # stops autostart $ systemctl stop whatever_you_want.service # stops the service $ systemctl restart whatever_you_want.service # restarts the service