Esegui Jar in background su Linux


12

Ho un vaso che funziona per sempre (loop infinito con thread di ascolto socket) e ne ho bisogno per funzionare sempre in background. Un esempio potrebbe essere: "java -jar test.jar" Come posso fare? Grazie in anticipo!

Risposte:


8

diversi modi:

  1. accodando &sul retro. Tuttavia, utilizzando questo, il programma verrà comunque terminato se si chiude il terminale che ha avviato il programma.

  2. Avvia una screensessione e avvia il programma al suo interno; puoi staccare la screensessione e chiudere il terminale. Più tardi, puoi collegarti di nuovo alla sessione e ritrovarti sulla console come se fossi stato lì da sempre. Tuttavia, dovrai avviare una sessione di schermo prima di eseguire il programma e, se ti sei dimenticato di farlo, non puoi farci nulla.

  3. Usa il disowncontrollo del lavoro dalla tua shell. Questo distaccerà l'attività dal tuo tty e il tuo programma non verrà chiuso quando il tty è chiuso. Tuttavia, non penso che ci sia modo di ricollegare un lavoro rinnegato.


13

Un prompt della riga di comando che ho sempre usato per lunghi periodi di esecuzione per durare attraverso i logout è "nohup", quindi nel tuo caso è

nohup java -jar test.jar &

Il & è importante in modo da poter far funzionare un'altra shell. Credo che questo non durerà con i riavvii.


7

Se per "in ogni momento", intendi che si avvia all'avvio del computer, dovrai avviarlo come parte degli script di avvio. Il modo sporco per farlo è aggiungere

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

su /etc/rc.local (o sostituisci / dev / null con il tuo file di registro preferito).

Meglio sarebbe creare uno script init.d che inizi nei runlevel appropriati (potresti non volerlo sul runlevel 0, 1 o 6, per esempio). In questo modo, puoi anche riavviarlo automaticamente se muore e avere un'interfaccia migliore per fermarlo temporaneamente.

Piccoli esempi su http://www.howtoforge.com/forums/archive/index.php/t-3628.html

Grande spiegazione su http://developer.novell.com/wiki/index.php/Writing_Init_Scripts


un'altra possibilità, se vuoi che funzioni solo con permanenti dell'utente è metterlo in cron e usare '@reboot' come tempo di esecuzione. Vedi 'man 5 crontab' per i dettagli.
pjz,

3
java -jar test.jar &

L'operatore & forzerà l'esecuzione del processo in background, in seguito puoi eseguire il comando 'top' per vedere che è in esecuzione.


1

Puoi eseguire qualsiasi attività in background su Linux aggiungendo un simbolo '&' alla fine della riga di comando, ad es

java -jar test.jar &


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.