중첩된 nohup 오류 처리 출력

중첩된 nohup 오류 처리 출력

다른 명령을 실행하는 다른 bash 스크립트 B(예: scriptb.sh)를 실행하는 bash 스크립트 A(예: scripta.sh)가 있습니다.

ㅏ:

# Cool logic
scriptb.sh &

두번째:

# Cool logic
nohup python3 app.py >> app.log &

을 실행하면 nohup scripta.sh >> a.log &A와 app.py의 출력을 모두 a.log에 넣었고 app.log는 비어 있습니다.

왜 이런 일이 발생합니까? 이 동작을 어떻게 바꿀 수 있나요?

답변1

당신의 nohup은 "stderr를 stdout으로 리디렉션"이라고 말하지 않습니까?

이것이 바로 일어난 일입니다. stderr를 (대화형 셸에서 명령을 실행할 때 stderr은 tty이기 때문에)로 nohup scripta.sh >> a.log &리디렉션하면 두 번째 from은 그렇게 할 필요가 없습니다(stderr는 tty가 아니지만 이기 때문에 ). stderr는 로 이동합니다 .a.lognohup python3 ..scriptb.sha.logpython3 ...a.log

맨페이지에는 다음과 같이 나와 있습니다 nohup(1).

표준 입력이 터미널인 경우 읽을 수 없는 파일에서 리디렉션하십시오.

표준 출력이 터미널인 경우 nohup.out가능하면 출력을 터미널에 추가하고, $HOME/nohup.out 그렇지 않으면 출력을 추가합니다.

표준 오류가 터미널인 경우, 표준 출력으로 리디렉션합니다.

관련 정보