"nohup.out"에 nohup을 추가하는 것과 명시적으로 파일로 리디렉션하는 것의 차이점은 무엇입니까?

"nohup.out"에 nohup을 추가하는 것과 명시적으로 파일로 리디렉션하는 것의 차이점은 무엇입니까?

다음 시나리오를 고려해보세요.

테일 파일:

#!/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를 통해 원격으로 명령을 실행하면 표준 출력은 터미널이 아닙니다. 두 명령에 대해 동일한 동작을 얻으려면 -twith 옵션을 사용하십시오 .ssh

ssh 및 nohup에 대한 자세한 내용:http://snailbook.com/faq/Background-jobs.auto.html(위키 페이지에서 가져옴:https://en.wikipedia.org/wiki/Nohup)

관련 정보