nohup 출력을 nohup.out 이외의 로그 파일로 리디렉션하는 방법이 있습니까?

nohup 출력을 nohup.out 이외의 로그 파일로 리디렉션하는 방법이 있습니까?

nohup나는 프로세스가 중단되지 않도록 이 프로그램을 자주 사용합니다 . 따라서 program프로그램이 중단되지 않도록 보호 하려면 다음 명령을 사용합니다.

nohup program &

&프로세스를 백그라운드에 두는 곳입니다 .

시작하려면 nohup나에게 메시지를 보내주세요:

nohup: "nohup.out"에 출력을 추가합니다.

출력을 다른 파일로 보내는 방법이 있습니까 nohup.out? 일반적으로 나는 동일한 디렉토리에서 많은 프로세스를 실행하고 싶지만 nohup이렇게 하면 모든 출력이 하나의 nohup.out파일에 집중됩니다.

매뉴얼 페이지(예:여기) 로그 파일을 지정하는 옵션이 없는 것 같습니다. 이것을 확인해주실 수 있나요? 또한 이 문제를 어떻게 해결할 수 있는지에 대한 아이디어가 있습니까?

답변1

GNU coreutils nohup매뉴얼 페이지는 일반 리디렉션을 사용할 수 있음을 나타냅니다.

표준 입력이 터미널인 경우 에서 리디렉션합니다 /dev/null. 표준 출력이 터미널인 경우 nohup.out가능하면 출력을 터미널에 추가하고, $HOME/nohup.out그렇지 않으면 출력을 추가합니다. 표준 오류가 터미널인 경우 표준 출력으로 리디렉션합니다. 출력을 FILE에 저장하려면 nohup COMMAND > FILE.

편집: 처음에는 귀하의 링크를 읽지 않았습니다. 다른 버전이 있을 수 있습니다 nohup. 하지만 이 섹션에서는 여전히 일반 리디렉션을 사용할 수 있다고 제안합니다.

 nohup.out          The output file of the nohup execution if
                    standard  output is a terminal and if the
                    current directory is writable.

표준 출력과 표준 오류를 다른 파일로 리디렉션할 수 있습니다.

nohup myprogram > myprogram.out 2> myprogram.err &

또는 동일한 파일:

nohup myprogram > myprogram.out 2>&1 &

(마지막 &를 배경에 넣는 것을 잊지 마세요)

답변2

다음에 추가더 많은 가시성을 얻으려면 여기에 답변을 달아주세요.

대신에 nohup program > program.out &출력을 쓰기 위해program.outnohup.out

답변3

글쎄, 만약 당신이 파이썬을 사용하고 있고 오랫동안 검색을 해왔지만 작동하게 만들 수 없다면 말이죠. 여기 있어요:

nohup python -u my_script.py > program.out 2>&1 &

원인: Python은 출력을 쓰기 전에 버퍼링하므로 -u이 동작을 비활성화합니다.

업데이트: 환경을 설정할 수도 있습니다. PYTHONUNBUFFERED=1 동일한 동작에 대한 변형입니다 .

답변4

누군가 이 명령을 설명할 수 있나요? 상형문자 2>&1이 무엇을 의미하고 무엇을 하는지 설명해 주실 수 있나요?

  • nohup명령은 SIGHUP을 무시하고 주어진 명령을 실행합니다.
  • SIGHUP은 "전화 끊기"를 의미하며 일반적으로 시스템 연결이 끊길 때(네트워크 중단) 프로그램으로 전송됩니다.
  • 표준 출력이 터미널인 경우 기본값은 nohup.out현재 디렉터리에 쓰는 것입니다.
  • 이렇게 하면 2>&1"터미널에 연결" 부분이 무효화됩니다.
  • 표준 출력과 동일한 의미를 갖는 2>표준 오류에 쓰는 것을 나타냅니다 .&1
  • 그런 다음 > program.out표준 출력을 파일에 쓰도록 쉘에 지시합니다 program.out.

관련 정보