열린 파일에서 처음 10MB를 제거합니다.

열린 파일에서 처음 10MB를 제거합니다.

프로그램에 의해 열리고 지속적으로 기록되는 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

관련 정보