Eu tenho um jar que é executado 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!
várias formas:
anexando &
na parte de trás. No entanto, 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 a screen
sessão e fechar o terminal. Posteriormente, você poderá se conectar à sessão novamente e voltar ao console como se estivesse lá o tempo todo. No entanto, você precisará iniciar uma sessão na tela antes de executar o programa, e se você esqueceu de fazer isso, não poderá fazer nada a respeito.
Use o disown
controle de tarefas do seu shell. Isso desanexará a tarefa do seu tty e seu programa não será encerrado quando o tty for fechado. No entanto, acho que não há maneira de anexar um emprego renegado.
Um prompt de linha de comando que eu sempre usei para longos períodos de execução até o final do logoff é "nohup", portanto, no seu caso, é
nohup java -jar test.jar &
O & é importante para que você possa executar outro shell. Eu acredito que isso não vai durar através de reinicializações.
Se por "em todos os momentos", você quer dizer que ele é iniciado quando a máquina é inicializada, será necessário iniciá-lo como parte dos scripts de inicialização. A maneira suja de fazer isso é adicionar
java -jar test.jar> / dev / null 2> & 1 e
para /etc/rc.local (ou substitua / dev / null pelo seu arquivo de log favorito).
Melhor seria criar um script init.d que inicie nos níveis de execução apropriados (você pode não querer no nível de execução 0, 1 ou 6, por exemplo). Dessa forma, você também pode ser reiniciado automaticamente se morrer e ter uma interface melhor para pará-lo temporariamente.
Pequenos exemplos em http://www.howtoforge.com/forums/archive/index.php/t-3628.html
Grande explicação em http://developer.novell.com/wiki/index.php/Writing_Init_Scripts
O operador & forçará a execução do processo em segundo plano; você poderá executar o comando 'top' posteriormente para verificar se está em execução.
fonte
Você pode executar qualquer tarefa em segundo plano no Linux anexando um símbolo '&' ao final da linha de comando, por exemplo
fonte
Você pode usar a versão da comunidade do Java Service Wrapper disponível aqui:
http://wrapper.tanukisoftware.org/doc/english/download.jsp
Você pode começar com a reinicialização:
http://wrapper.tanukisoftware.org/doc/english/launch-nix-boot-debian.html
fonte
Coloque
&
no final:java -jar test.jar &
fonte