127 votes

Exécuter un fichier java jar sur un serveur en tant que processus d'arrière-plan

J'ai besoin d'exécuter un jar java dans le serveur afin de communiquer entre deux applications. J'ai écrit deux scripts pour l'exécuter, mais une fois que je lance ce scripts, je ne peux pas arrêter / terminer le processus. Si j'appuie sur ctrl + C ou fermez la console, le serveur s'arrêtera. Quelqu'un peut-il m'aider à modifier ce script pour qu'il fonctionne comme un serveur normal ?

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

317voto

Anton Beloglazov Points 866

Vous pouvez essayer ceci :

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

Le symbole & permet d'exécuter le programme en arrière-plan.

L'utilitaire nohup fait en sorte que la commande passée en argument s'exécute en arrière-plan, même après votre déconnexion.

74voto

mtelesha Points 31

Systemd qui fonctionne maintenant dans la majorité des distros

Étape 1 :

Trouvez vos services définis par l'utilisateur ; le mien était à /usr/lib/systemd/system/

Étape 2 :

Créez un fichier texte avec votre éditeur de texte préféré, nommez-le whatever_you_want.service

Étape 3 :

Mettre à la suite Modèle dans le fichier whatever_you_want.service

[Unit]
Description=webserver Daemon

[Service]
ExecStart=/usr/bin/java -jar /web/server.jar
User=user

[Install]
WantedBy=multi-user.target

Étape 4 :

Exécutez votre service
en tant que super utilisateur

$ 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

34voto

Strelok Points 18453

Si vous utilisez Ubuntu et que vous avez "Upstart" ( http://upstart.ubuntu.com/ ) vous pouvez essayer ceci :

Créer /var/init/yourservice.conf

avec le contenu suivant

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  

Vous pouvez maintenant émettre le service yourservice start y service yourservice stop des commandes. Vous pouvez suivre /var/log/yourservice.log pour vérifier qu'il fonctionne.

Si vous souhaitez simplement exécuter votre jar depuis la console sans qu'il n'accapare la fenêtre de la console, vous pouvez le faire :

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

22voto

KayV Points 3131

Exécuter en arrière-plan et ajouter les journaux au fichier journal en utilisant ce qui suit :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X