나는 nohup
백그라운드에서 원격 서버에 명령을 실행하고 nohup.out
파일을 사용하여 진행 상황을 확인하는 데 사용합니다. 한 줄(마지막 표준 출력)만 포함하므로 nohup
다시 쓰도록 설정할 수 있습니까 ?nohup.out
답변1
댓글에서, 사용자는 출력 파일을 확인한 다음 다시 확인하기 전에 비울 수 있기를 원하는 것 같습니다.
이렇게 하려면 프로그램을 시작하고 >>
출력 파일로 리디렉션합니다.
$ somecommand >>logfile &
logfile
그런 다음 원하는 대로 읽으세요. 파일을 비우려면 다음을 실행하십시오.
$ >logfile
이렇게 하면 파일이 잘리지만 그대로 유지됩니다. 다음에 프로그램이 출력 파일에 쓸 때 파일의 시작 부분에 쓸 것입니다.
우리는 >>
"추가 모드"에서 파일을 여는 데 사용합니다. 이는 파일에 대한 새로운 쓰기가 항상 파일의 (현재) 끝에서 발생함을 의미합니다.
파일을 사용 >
하고 자르면 파일의 새로운 쓰기가 원래 있던 파일 위치에서 발생합니다. 이는 파일의 시작 부분과 새 내용 사이의 영역이 널 바이트로 채워짐을 의미합니다.
답변2
nohup
리디렉션 없이 사용하면 nohup.out
파일 이 append mode
.
이것이 명령 확인 후 파일이 잘리는 이유입니다.
> nohup.out
파일 길이를 0으로 설정하고 프로그램의 후속 출력을 nohup.out
파일 시작 부분에 씁니다.
위 질문에 대한 답변이 바로 이것이며, 이는 효과가 있습니다. 이는 실행의 현재 상태를 조사한 후에 파일 내용이 더 이상 의미가 없는 긴 출력에 유용할 수 있습니다.
질문에서 알 수 있듯이 프로그램의 출력은 단 한 줄이므로 a rm nohup.out
이전의 다음 호출은 > nohup.out
삭제 후 파일이 존재하지 않는다는 유일한 차이점이 있는 결과를 제공합니다. 그렇지 않으면 길이가 0인 파일이 남아 있습니다.
답변3
nohup
외부 및/또는 셸별 구현에는 요구 사항을 충족할 수 있는 옵션이 없습니다. 몇 가지 대안 아이디어:
리디렉션을 통해 파일을 자릅니다. 그것은 다음과 같습니다:
nohup firefox 2>&1 > nohup.out &
. 일반적으로 동일한 작업이지만 수동으로 수행됩니다.rm
새 명령을 시작하기 전에 파일을 저장하십시오. 그것은 다음과 같습니다:rm nohup.out; nohup firefox 2>&1 &