J'ai besoin d'exécuter un java jar dans le serveur afin de communiquer entre deux applications. J'ai écrit deux scripts shell pour l'exécuter, mais une fois que j'ai démarré ce script, je ne peux pas arrêter / terminer le processus. Si j'appuie sur ctrl+ Cou ferme la console, le serveur s'arrête. 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
shell
unix
executable-jar
Bernad Ali
la source
la source
nohup
doit toujours être combinée avec la redirection explicite de stdout et stderr - sinon, vous ne contrôlez pas où les journaux vont et vous vous retrouvez avec un laidnohup.out
créé dans le répertoire à partir duquel ce script est appelé.Systemd qui fonctionne maintenant dans la majorité des distributions
Étape 1:
Trouvez vos services définis par l'utilisateur que 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 le modèle suivant dans le fichier
whatever_you_want.service
Étape 4:
Exécutez votre service en
tant que super utilisateur
la source
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
Vous pouvez maintenant émettre les commandes
service yourservice start
etservice yourservice stop
. Vous pouvez suivre/var/log/yourservice.log
pour vérifier que cela fonctionne.Si vous souhaitez simplement exécuter votre fichier jar à partir de la console sans monopoliser la fenêtre de la console, vous pouvez simplement faire:
la source
java -jar /web/server.jar > /var/log/yourservice.log 2>&1 &
Exécutez en arrière-plan et ajoutez des journaux au fichier journal en utilisant les éléments suivants:
la source