
Eu tenho um jar que funciona para sempre (loop infinito com thread de escuta de soquete) e preciso que ele seja executado em segundo plano o tempo todo. Um exemplo seria: "java -jar test.jar" Como faço isso? Desde já, obrigado!
Responder1
várias formas:
anexando
&
na parte de trás. Porém, usando isso, o programa ainda será encerrado se você fechar o terminal que iniciou o programa.Inicie uma
screen
sessão e inicie o programa dentro dela; você pode desanexar ascreen
sessão e fechar o terminal. Mais tarde, você pode se conectar à sessão novamente e voltar ao console como se estivesse lá o tempo todo. No entanto, você precisará iniciar uma sessão de tela antes de executar o programa e, se tiver esquecido de fazer isso, não poderá fazer nada a respeito.Use
disown
o controle de trabalho do seu shell. Isso separará a tarefa do seu tty e seu programa não será encerrado quando o tty for fechado. No entanto, não creio que haja alguma maneira de reconectar um trabalho rejeitado.
Responder2
Um prompt de linha de comando que sempre usei para tempos de execução longos para durar logoffs é "nohup", então no seu caso é
nohup java -jar test.jar &
O & é importante para que você possa executar outro shell. Acredito que isso não durará até as reinicializações.
Responder3
Se por "sempre" você quer dizer que ele é iniciado quando a máquina é inicializada, você precisará iniciá-lo como parte dos scripts de inicialização. A maneira suja de fazer isso é adicionar
java -jar test.jar >/dev/null 2>&1 &
para /etc/rc.local
(ou substitua /dev/null
pelo seu arquivo de log favorito).
Melhor seria criar um init.d
script que iniciasse nos níveis de execução apropriados (você pode não querer isso no nível de execução 0, 1 ou 6, por exemplo). Dessa forma, você também pode reiniciá-lo automaticamente se ele morrer e ter uma interface melhor para interrompê-lo temporariamente.
Pequenos exemplos emhttp://www.howtoforge.com/forums/archive/index.php/t-3628.html
Grande explicação emhttp://developer.novell.com/wiki/index.php/Writing_Init_Scripts
Responder4
Você pode executar qualquer tarefa em segundo plano no Linux anexando um símbolo '&' ao final da linha de comando, por exemplo
java -jar test.jar &