
Eu escrevi um script bash para executar meu arquivo jar no ambiente Ubuntu ou Red Hat. Aqui está 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 executará o jar que desenvolvi, espero imprimir a saída do arquivo jar nohup.out
ou qualquer arquivo txt, para que eu possa rastrear qualquer problema facilmente, mas parece que não há impressão de nada quando executo o script , imprima toda a saída no terminal. Mas quando executo nohup java -jar /home/chikin/Downloads/hardcoded.jar &
diretamente do terminal, ele é capaz de 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 consegue ser acionado toda vez que eu reinicio minha máquina Ubuntu, testei muitas das soluções, mas nenhuma delas funcionou bem
Responder1
A menos que você tenha exportado o valor nohup
para o ambiente do script (por exemplo export nohup=/usr/bin/nohup
), $nohup
será avaliado como uma string vazia - daí o seu comando
$nohup java -jar /home/chikin/Downloads/hardcoded.jar
fica 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 página de manual, 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'.