다음 시나리오를 고려해보세요.
테일 파일:
#!/bin/bash
tail -f test.txt
call.sh:
#!/bin/bash
nohup ./tail.sh &
호출_explicitredirect.sh:
#!/bin/bash
nohup ./tail.sh > out.log &
터미널에서 둘 다 실행하면 동일한 효과가 나타납니다.
- 실행 후 터미널 제어권을 되찾았습니다.
./tail.sh
tail
터미널에 출력이 나타나지 않습니다.
ssh
그러나 (예를 들어) 다음을 사용하여 실행하는 경우 ssh <user>@<hostname> "<script>"
:
invoke_explicitredirect.sh
제어권을 다음으로 반환ssh
(및 종료)invoke.sh
내가 보낼 때까지 멈춤SIGINT
man nohup
가능한 경우 nohup
출력이 자동으로 "nohup.out"으로 리디렉션됩니다 .
If standard output is a terminal, append output to 'nohup.out' if possible, '$HOME/nohup.out' otherwise.
nohup
출력에 추가하도록 허용하는 것과 nohup.out
출력을 명시적으로 리디렉션하는 것의 차이점은 무엇입니까?
답변1
SSH를 통해 원격으로 명령을 실행하면 표준 출력은 터미널이 아닙니다. 두 명령에 대해 동일한 동작을 얻으려면 -t
with 옵션을 사용하십시오 .ssh
ssh 및 nohup에 대한 자세한 내용:http://snailbook.com/faq/Background-jobs.auto.html(위키 페이지에서 가져옴:https://en.wikipedia.org/wiki/Nohup)