du는 이상한 파일 크기를 표시하고 일부 어색한 크기 계산 규칙을 ​​따르는 것 같습니다.

du는 이상한 파일 크기를 표시하고 일부 어색한 크기 계산 규칙을 ​​따르는 것 같습니다.

CentOS 7 가상 머신에서 스스로 설명할 수 없는 몇 가지 문제에 봉착했습니다.

약 100KBps 속도로 커지는 로그 파일을 보고 있습니다.

watchcall 이 있지만 du다음 콘솔 캡처에 표시된 것처럼 출력은 항상 2의 거듭제곱입니다.

Every 2s: 
du -k out.log
Sat Jan  4 14:26:25 2020

2097088 out.log

따라서 크기를 KB 또는 MB 단위로 표시하거나 콘솔에서 변경된 크기를 표시하면 일반 15M, 16M, 17M... 등과 같이 만족스러울 것입니다. 파일이 커지는 것을 보고 싶습니다. 단위는 중요하지 않습니다.

하지만 내가 얻는 것은 중간 단계 없이 16M, 32M, 64M,... 256M, 512M... 입니다. 값이 변경될 때마다 이전 시간의 두 배가 경과한 것입니다. 변경 사항을 표시하려면 파일이 두 배 더 커야 하기 때문입니다.

문제 없이 사용하면 -b2초마다 크기가 커지는 것을 볼 수 있습니다.

나는 다음과 같은 맨 페이지에서 검색했습니다.이것하지만 왜 이 옵션을 사용하면 "실제 진행 상황"이 표시되지 않는지 이해할 수 없습니다 -k.

문서에 뭔가 빠진 것이 확실하지만 무엇인지 모르겠습니다.

이 커뮤니티에 시간과 투자를 해주신 모든 분들께 감사드립니다.

편집하다

이 명령을 다시 실행하십시오 watch du -k out.log.

  • 4(호출 시 첫 번째 값)
  • (2초간 대기) 24
  • (약 1분 정도 대기) 28

당시 로그는 천천히 채워지고 있었습니다. 약 100바이트/초 정도였으므로 모든 KByte가 표시되어야 했습니다.

  • (8초) 32
  • (12초) 36
  • (12초) 40
  • (12초) 44
  • (10초) 52
  • (12초) 60

거기까지는 표시된 크기가 이제 4K의 배수인 것으로 나타났습니다. 이는 아마도 HDD 클러스터 크기일 것입니다. 파일 크기를 "블록 크기"로 표시할 수 있다는 것을 알 수 있습니다.

  • (30초 후) 192

파일 로그에는 파일이 " 정상적으로 tail -f실행 중"이라는 메시지가 표시되며 파일 크기는 계속해서 커집니다.

이 시점에서 10분 이상이 지났고, 로그 소스는 처음부터 상당히 안정적이었습니다.

  • (12분) 448 = 64x7
  • (9분) 960 = 64x15
  • (20분) 1984 = 64x31

현재 값은 64K x ((pow 배수 2) -1)인 것 같습니다.

  • (24분, 지금 추가 기록) 1284로 전달됨???뭐? ? ? 참고: 이는 64K의 배수가 아닙니다.
  • (2분) 2304 = 64x36
  • (5분) 1820 ???참고: 64K의 배수가 아님

꼬리는 파일이 증가하고 있음을 보여줍니다. 이상한 것은 없습니다... 대체 무슨 일이 일어나고 있는 걸까요?

  • (2분) 3840 = 64x60
  • 프로세스 종료
  • (2분) 2940은 64의 배수가 아닌가요???

아니면 섣달 그믐 날에 술을 너무 많이 마셨는데, 그렇지는 않습니다. 이 모든 것에는 정말 특별한 것이 있고 거기에서 무슨 일이 일어나고 있는지 정말로 알고 싶습니다.

관련 정보