nohup.out을 재정의하는 방법은 무엇입니까?

nohup.out을 재정의하는 방법은 무엇입니까?

나는 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 &

관련 정보