프로그램에 의해 열리고 지속적으로 기록되는 100MB 크기에 가까운 로그 파일이 있습니다. 파일의 처음 10MB를 삭제하고 싶습니다. 해당 파일의 로깅 프로세스에 영향을 주지 않고 이를 수행할 수 있는 방법이 있습니까?
답변1
처음 10MB를 건너뛰려면 다음을 dd
사용할 수 있습니다.
dd if=ORIGINAL_FILE of=10MB_LESS_FILE bs=512 skip=14880
그러면 원본 파일이 10MB_LESS_FILE
.
답변2
파일 시작 부분부터 데이터를 삭제할 수 있는 방법은 없습니다. truncate 호출은 끝에서부터 데이터를 자를 수 있지만 공간을 임의로 자르는 것과는 다릅니다.
따라서 가장 좋은 방법은 필요하지 않은 부분을 건너뛰고 맨 위에 파일을 복사하는 것입니다.
답변3
파일을 계속 기록하기 전에 하나 이상의 프로세스에서 열린 파일의 inode가 변경되지 않았는지 확인해야 합니다. 이렇게 하려면 다음을 수행하십시오.
cp mylog mylog.new
< modify, trim or mangle `mylog.new` >
cp mylog.new mylog