nohup 및 파이프라인으로 리디렉션된 파일 문제

nohup 및 파이프라인으로 리디렉션된 파일 문제

다음 명령의 경우:

ssh -t esolve@hostname 'sudo nohup bash -c "ls > log 2>&1 &"'

항상 다음과 같은 오류 메시지가 나타납니다.

       nohup: ignoring input and appending output to `nohup.out'

왜 이런 일이 발생하며 이 오류 메시지를 방지하는 방법은 무엇입니까?

또한 아래(화면과 파일로 출력을 활성화하는 데 사용함)는 다음과 같습니다.

   stdbuf -o 0 command|& tee logfile

& 그것은 무엇을 위해 사용됩니까?

답변1

실행 중인 명령이 nohupstdout 또는 stderr에 쓰지 않고 입력을 보내지 않는 경우가 있습니다. 하지만 nohup이를 알 수 있는 방법이 없으므로 모든 입력이 삭제되고 모든 출력이 기록된다는 것을 알려줍니다 nohup.out.

이를 방지하려면 nohupstdin, stdout 및 stderr을 /dev/null.

ssh -t esolve@hostname 'sudo nohup bash -c "ls > log 2>&1 &" </dev/null >/dev/null 2>/dev/null'

에 관해서는 |&, 부터배쉬 매뉴얼:

파이프의 형식은 다음과 같습니다.

[time [-p]] [!] command1 [ [| or |&] command2 …]

파이프라인의 각 명령 출력은 다음 명령의 입력으로 파이프됩니다. 즉, 각 명령은 이전 명령의 출력을 읽습니다. 이 연결은 명령으로 지정된 리디렉션 전에 수행됩니다.

사용되는 경우 |&표준 오류는 표준 command1입력으로 연결됩니다 .command22>&1 |

이것은 zsh에도 존재하는 bash 확장입니다.

관련 정보