genericStackOverflowUser:
Eu tenho um programa Java que executa o script seguinte shell para reiniciá-lo auto.
sleep 5
nohup java -jar /home/my-dir/MyJar.jar &
Se eu executar o script a partir de um terminal, ele simplesmente funciona como esperado. No entanto, se o programa Java executa o script, o programa é iniciado normalmente, mas nada é escrito para o arquivo de saída.
Eu iniciar o script via o seguinte código
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command("/bin/sh", "/home/my-dir/start.sh");
try {
processBuilder.start();
logger.info("Successfully started");
} catch (IOException e) {
e.printStackTrace();
}
Uday Chauhan:
A menos que você tiver exportado o valor de nohup no ambiente do roteiro (por exemplo, a exportação nohup = / usr / bin / nohup), em seguida $ nohup irá avaliar para a cadeia vazia - daí o seu comando
nohup não está sendo invocado em tudo. Você provavelmente quer
nohup java -jar MyJar.jar & tail -f nohup.out
Provavelmente é melhor fazer o arquivo de saída explícita:
$ nohup java -jar MyJar.jar > nohup.out & tail -f nohup.out