배경: 파일에 로그를 쓰는 스크립트를 Raspberry Pi에서 실행하고 있습니다. 스크립트를 완료하는 데 시간이 걸리므로 때때로 pi에 정전이 발생하여 종료되는 경우가 있습니다. 이런 일이 발생할 때마다 로그 파일은 일반적으로 몇 줄이 손실되고 일부 null 바이트가 로그 끝에 추가된 것처럼 보입니다.
표적:그런 상황을 감지하려고 노력 중입니다. 로그를 보면 null 바이트를 나타내는 "^@^@" 문자 묶음을 볼 수 있습니다. 나는 이 file
명령을 사용해 보았고 "손상된" 로그가 "데이터"를 반환한 반면 일반 로그는 "ASCII 텍스트"를 반환했다는 사실을 발견했습니다.
질문: 이것이 작동할 것이라고 생각했지만 파일을 열지 않은 경우(예: nano 사용) 손상된 파일이라도 "ASCII 텍스트"를 반환하는 것 같습니다. 편집자로 본 후에야 "데이터"가 됩니다. 왜 이런 일이 발생하는지 아시나요? 이 상황을 감지할 수 있는 강력한 솔루션이 있습니까?
감사해요!
편집: 한 가지 중요한 사항을 포함하는 것을 잊어버렸습니다(나도 이것을 깨달았기 때문에): 처음으로 "ASCII 텍스트"를 반환하면 파일 끝은 "^@^@"이고 두 번째에는 "ASCII 텍스트"를 반환합니다. 파일은 "^@^@"로 끝납니다. "^@^@xxx"로 끝나는 "데이터"를 반환합니다(몇 개의 문자가 추가됨). 이것이 영향을 미치는지 확실하지 않습니다.
편집 2: 예, "손상된" 파일의 경우 파일 형식만 확인하면 "ASCII 텍스트"가 반환되지만 그렇게 하면 echo "xxxx" >> the_file
파일이 "데이터"가 된다는 것을 확인했습니다..... 그래서, 내 현재 해결책은 파일 형식을 확인하기 전에 일부 문자를 파일에 에코하는 것입니다. 그래도 그 이유가 궁금합니다.