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.out
nohup.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
.