no trabalho termina quase imediatamente

0

Eu tenho um script bash, /home/x/bin/asdf , (que dispara um monte de JVMs, canalizados juntos), e isso funciona bem, quando rodando diretamente da linha de comando como

/home/x/bin/asdf

No entanto, ao tentar executar o mesmo que

echo '/home/x/bin/asdf' | at SOME_TIME

Depois, vejo que o script e minhas JVMs começam, mas terminam após um segundo ou mais. A saída inicial dessas JVMs será de fato enviada por at em seu e-mail com o stdout, portanto, está funcionando - resumidamente.

Então, por que o script asdf / as JVMs terminam quase imediatamente? Quando executado diretamente, ele é executado e gera material indefinidamente.

N.B. Uma das JVMs faz uma conexão TCP. Não posso confirmar que isso é feito quando executado por at . Mas se houver um erro, ele será impresso para stderr. Mas no e-mail de at não há erro.

    
por Eugene Beresovsky 26.09.2018 / 04:30

1 resposta

3

Assim, a diferença crucial entre iniciar o script diretamente e executar at foi: a falta de stdin no último caso.

Para que eu possa reproduzir meu script imediatamente, faça isso:

/home/x/bin/asdf </dev/null

Para consertar, eu tive que mudar um desses programas Java, que terminavam quando não havia entrada de stdin.

    
por 26.09.2018 / 06:10