Run Jar em segundo plano no Linux

11

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 em todos os momentos. Um exemplo seria: "java -jar test.jar" Como faço isso? Obrigado antecipadamente!

    
por Benny 16.06.2010 / 16:00

7 respostas

8

várias maneiras:

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

  2. Inicie uma sessão screen e inicie o programa dentro dela; você pode desanexar a sessão screen e fechar o terminal. Mais tarde, você pode se conectar à sessão novamente e se encontrar de volta no 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.

  3. Use o controle de trabalho disown do seu shell. Isso desanexará a tarefa do seu tty e seu programa não será encerrado quando o tty for fechado. No entanto, não acho que haja uma maneira de reativar um trabalho de renome.

por 16.06.2010 / 16:09
11

Um prompt de linha de comando que eu sempre usei para tempos de execução longos para durar por meio de logoffs é "nohup", então no seu caso é

nohup java -jar test.jar &

O & é importante para que você possa obter outro shell em execução. Eu acredito que isso não vai durar através de reinicializações.

    
por 16.06.2010 / 17:57
5

Se por "em todos os momentos", você quer dizer que é iniciado quando a máquina inicializa, você precisará iniciá-lo como parte dos scripts de inicialização. O jeito sujo 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 script init.d iniciado nos níveis de execução apropriados (talvez você não queira 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 tiver uma interface melhor para interrompê-lo temporariamente.

Exemplos pequenos no link

Grande explicação no link

    
por 16.06.2010 / 16:07
2
java -jar test.jar &

O & operador forçará o processo a rodar em segundo plano, você pode executar o comando 'top' depois para ver se ele está rodando.

    
por 16.06.2010 / 16:02
1

Você pode executar qualquer tarefa em segundo plano no Linux adicionando um '&' símbolo ao final da linha de comando, por exemplo

java -jar test.jar &
    
por 16.06.2010 / 16:02
1

Você pode usar a versão da comunidade do Java Service Wrapper disponível aqui:

link

Você pode começar a reinicializar:

link

    
por 16.06.2010 / 16:02
1

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

    
por 16.06.2010 / 16:02

Tags