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!
plusieurs façons:
annexé &
à l'arrière. Cependant, en utilisant cela, le programme sera toujours interrompu si vous fermez le terminal qui a démarré le programme.
Démarrez une screen
session et lancez le programme à l'intérieur; vous pouvez détacher la screen
session 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.
Utilisez le disown
contrô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é.
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.
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
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
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
la source
Vous pouvez utiliser la version communautaire de Java Service Wrapper disponible à partir d'ici:
http://wrapper.tanukisoftware.org/doc/english/download.jsp
Vous pouvez alors le faire démarrer au redémarrage:
http://wrapper.tanukisoftware.org/doc/english/launch-nix-boot-debian.html
la source
Mettez
&
à la fin:java -jar test.jar &
la source