web-dev-qa-db-fra.com

Exécuter le fichier jar Java sur un serveur en tant que processus en arrière-plan

Je dois exécuter un jar Java sur le serveur pour pouvoir communiquer entre deux applications. J'ai écrit deux scripts Shell pour l'exécuter, mais une fois que je l'ai démarré, je ne peux pas arrêter/terminer le processus. Si je presse ctrl+C ou fermez la console, le serveur s’arrêtera. Quelqu'un pourrait-il m'aider à modifier ce script pour qu'il s'exécute en tant que serveur normal?

 #!/bin/sh
Java -jar /web/server.jar
echo $! 
#> startupApp.pid
90
Bernad Ali

Vous pouvez essayer ceci:

#!/bin/sh
Nohup Java -jar /web/server.jar &

Le symbole & fait basculer le programme en arrière-plan.

L'utilitaire Nohup fait en sorte que la commande transmise en tant qu'argument soit exécutée en arrière-plan, même après votre déconnexion.

197
Anton Beloglazov

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 lancer les commandes service yourservice start et service yourservice stop. Vous pouvez suivre /var/log/yourservice.log pour vérifier qu'il fonctionne.

Si vous souhaitez simplement exécuter votre fichier jar à partir de la console sans couvrir la fenêtre de la console, vous pouvez simplement procéder comme suit:

Java -jar /web/server.jar > /var/log/yourservice.log 2>&1
27
Strelok

Systemd qui fonctionne maintenant dans la majorité des distributions

É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é et nommez-le whatever_you_want.service

Étape 3:

Placez les éléments suivants 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
26
mtelesha