nohup comando não consegue imprimir a saída para nohup.out

0

Eu escrevi um script bash para executar meu arquivo jar no Ubuntu ou no ambiente Red Hat. Aqui está o meu script bash -

#!/bin/bash
JAVA_HOME=/usr/lib/java/jdk1.8.0_131
$nohup java -jar /home/chikin/Downloads/hardcoded.jar & tail -f nohup.out


Meu script bash irá executar o jar que eu tinha desenvolvido, espero imprimir a saída do arquivo jar em nohup.out ou qualquer arquivo txt, para que eu possa rastrear qualquer problema facilmente, mas parece que sem imprimir nada quando eu executar o script, é imprimir toda a saída no terminal. Mas quando executo nohup java -jar /home/chikin/Downloads/hardcoded.jar & diretamente do terminal, é possível imprimir toda a saída do jar em nohup.out. Posso saber por que meu script não está funcionando?     Meu script também não é capaz de acionar toda vez que eu reinicio minha máquina Ubuntu, eu testei muitas das soluções, mas nenhuma delas funciona bem

    
por attack 21.06.2017 / 11:06

1 resposta

0

A menos que você tenha exportado o valor de nohup para o ambiente do script (por exemplo, export nohup=/usr/bin/nohup ), então $nohup será avaliado para a string vazia - daí seu comando

$nohup java -jar /home/chikin/Downloads/hardcoded.jar

torna-se claro

java -jar /home/chikin/Downloads/hardcoded.jar

então nohup não está sendo invocado. Você provavelmente quer

nohup java -jar /home/chikin/Downloads/hardcoded.jar & tail -f nohup.out

(sem o $ ).

Provavelmente, é melhor tornar o arquivo de saída explícito:

nohup java -jar /home/chikin/Downloads/hardcoded.jar > nohup.out & tail -f nohup.out

já que, conforme observado na manpage, as regras para o arquivo de saída dependem se a saída padrão é um terminal ou não:

If standard output is a terminal, append output to 'nohup.out' if  pos‐
sible,  '$HOME/nohup.out'  otherwise.  If standard error is a terminal,
redirect it to standard output.  To save output  to  FILE,  use  'nohup
COMMAND > FILE'.
    
por steeldriver 21.06.2017 / 13:34