Exécuter Jar en arrière-plan sur Linux

12

J'ai un pot qui fonctionne pour toujours (boucle infinie avec fil d'écoute de socket) et en ai besoin pour fonctionner en arrière-plan à tout moment. Un exemple serait: "java -jar test.jar" Comment faire cela? Merci d'avance!

Benny
la source

Réponses:

8

plusieurs façons:

  1. annexé &à l'arrière. Cependant, en utilisant cela, le programme sera toujours interrompu si vous fermez le terminal qui a démarré le programme.

  2. Démarrez une screensession et lancez le programme à l'intérieur; vous pouvez détacher la screensession et fermer le terminal. Plus tard, vous pourrez vous reconnecter à la session et vous retrouver sur la console comme si vous y étiez depuis le début. Cependant, vous devrez démarrer une session d'écran avant d'exécuter le programme, et si vous avez oublié de le faire, vous ne pouvez rien y faire.

  3. Utilisez le disowncontrôle des tâches depuis votre shell. Cela détachera la tâche de votre tty et votre programme ne sera pas arrêté lorsque le tty sera fermé. Cependant, je ne pense pas qu'il y ait moyen de rattacher un travail désavoué.

Lie Ryan
la source
13

Une invite de ligne de commande que j'ai toujours utilisée pour les durées de fonctionnement prolongées jusqu'à la fermeture de session est "nohup", donc dans votre cas,

nohup java -jar test.jar &

Le & est important pour que vous puissiez lancer un autre shell. Je crois que cela ne durera pas lors des redémarrages.


la source
7

Si par "à tout moment", vous voulez dire qu'il démarre au démarrage de la machine, vous devrez le démarrer dans le cadre des scripts de démarrage. La sale façon de le faire est d'ajouter

java -jar test.jar> / dev / null 2> & 1 &

dans /etc/rc.local (ou remplacez / dev / null par votre fichier journal préféré).

Il serait préférable de créer un script init.d qui démarre aux niveaux d'exécution appropriés (vous ne le voudrez peut-être pas au niveau d'exécution 0, 1 ou 6, par exemple). De cette façon, vous pouvez également le redémarrer automatiquement s'il meurt et avoir une interface plus agréable pour l'arrêter temporairement.

Petits exemples sur http://www.howtoforge.com/forums/archive/index.php/t-3628.html

Grande explication sur http://developer.novell.com/wiki/index.php/Writing_Init_Scripts


la source
une autre possibilité, si vous voulez qu'il s'exécute avec seulement des perms utilisateur, est de le mettre dans cron et d'utiliser '@reboot' comme temps d'exécution. Voir 'man 5 crontab' pour plus de détails.
pjz
3
java -jar test.jar &

L'opérateur & force le processus à s'exécuter en arrière-plan, vous pouvez ensuite exécuter la commande 'top' pour voir s'il est en cours d'exécution.


la source
1

Vous pouvez exécuter n'importe quelle tâche en arrière-plan sous Linux en ajoutant un symbole «&» à la fin de la ligne de commande, par exemple

java -jar test.jar &

la source
1

Mettez &à la fin:java -jar test.jar &

František Žiačik
la source