
우분투 또는 Red Hat 환경에서 jar 파일을 실행하기 위해 bash 스크립트를 작성했습니다. 여기 내 bash 스크립트가 있습니다
#!/bin/bash
JAVA_HOME=/usr/lib/java/jdk1.8.0_131
$nohup java -jar /home/chikin/Downloads/hardcoded.jar & tail -f nohup.out
내 bash 스크립트는 내가 개발한 jar를 실행할 것입니다. jar 파일의 출력을 txt 파일 nohup.out
이나 다른 txt 파일로 인쇄하고 싶습니다. 그러면 문제를 쉽게 추적할 수 있지만 스크립트를 실행할 때 아무 것도 인쇄되지 않는 것 같습니다. , 터미널의 모든 출력을 인쇄합니다. 하지만 nohup java -jar /home/chikin/Downloads/hardcoded.jar &
터미널에서 직접 실행하면 모든 jar 출력을 nohup.out으로 인쇄할 수 있습니다. 내 스크립트가 작동하지 않는 이유를 알 수 있습니까? 우분투 컴퓨터를 재부팅할 때마다 내 스크립트가 실행될 수 없습니다. 많은 솔루션을 테스트했지만 그 중 어느 것도 제대로 작동하지 않았습니다.
답변1
nohup
값을 스크립트 환경(예: export nohup=/usr/bin/nohup
) 으로 내보내지 않은 경우 $nohup
빈 문자열로 평가됩니다. 따라서 명령은
$nohup java -jar /home/chikin/Downloads/hardcoded.jar
평범해진다
java -jar /home/chikin/Downloads/hardcoded.jar
그래서 nohup
전혀 호출되지 않습니다. 아마 당신은 원할 것입니다
nohup java -jar /home/chikin/Downloads/hardcoded.jar & tail -f nohup.out
( 없이 $
).
아마도 출력 파일을 명시적으로 만드는 것이 더 나을 것입니다.
nohup java -jar /home/chikin/Downloads/hardcoded.jar > nohup.out & tail -f nohup.out
맨페이지에 명시된 대로 출력 파일의 규칙은 표준 출력이 터미널인지 여부에 따라 달라집니다.
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'.