Executar jar em segundo plano no Linux

12

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!

Benny
fonte

Respostas:

8

várias formas:

  1. anexando &na parte de trás. No entanto, usando isso, o programa ainda será encerrado se você fechar o terminal que iniciou o programa.

  2. Inicie uma screensessão e inicie o programa dentro dela; você pode desanexar a screensessã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.

  3. Use o disowncontrole 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.

Lie Ryan
fonte
13

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.


fonte
7

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


fonte
Outra possibilidade, se você deseja que ele seja executado apenas com permissões permanentes do usuário, é colocá-lo no cron e usar '@reboot' como o tempo de execução. Veja 'man 5 crontab' para detalhes.
pjz
3
java -jar test.jar &

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
1

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 &

fonte
1

Coloque &no final:java -jar test.jar &

František Žiačik
fonte