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
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.
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
Systemd qui fonctionne maintenant dans la majorité des distributions
Trouvez vos services définis par l'utilisateur le mien était à /usr/lib/systemd/system/
Créez un fichier texte avec votre éditeur de texte préféré et nommez-le whatever_you_want.service
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
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