inode 사용량이 개수와 일치하지 않습니다.

inode 사용량이 개수와 일치하지 않습니다.

나는 다음과 같은 inode 사용법을 가지고 있습니다.

host:~ # df -i
Filesystem                             Inodes  IUsed   IFree IUse% Mounted on
/dev/hda1                              655360 655357       3  100% /

그러나 이 명령을 실행하면 다음과 같습니다.

for i in `find . -xdev -type d `; do echo `ls -a $i | wc -l` $i; done | sort -n

나는 다음과 같은 결과를 얻었습니다.

host:/ # find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
      3 srv
     17 root
     25 bin
     83 sbin
    133 lib64
    184 opt
    985 boot
   2109 etc
   4487 lib
  50489 usr

그러나 그 합계는 전혀 일치하지 않습니다. inode가 어디에 사용되는지 모르겠습니다.

답변1

스크립트가 파일( -type f)만 찾기 때문입니다.

디렉토리와 기호 링크에는 자체 inode가 있지만 검색 요청에서 찾을 수 없습니다.

다음과 같이 명령을 수정하십시오.

find / -xdev \( -type f -o -type d -o -type l \) | cut -d "/" -f 2 | sort | uniq -c | sort -n

그리고 당신은 다른 결과를 얻을 것입니다.


몇개의 충고: inode 문제를 해결하기 위해 이와 같은 명령을 사용하지 마십시오. 대부분의 경우 모든 inode를 소비하는 작은 로그 파일에 문제가 있으며 기본적인 문제는 해당 파일을 찾는 것입니다.

이렇게 하려면 명령 -mtime옵션을 사용할 수 있습니다 find.

find / -xdev -mtime -1 -printf '%h\n' -type f | sort | uniq -c | sort -k 1 -n

이 명령은 파일 수를 포함하는 디렉터리를 반환합니다.

위에서 언급한 내용 -type f으로 대체 할 수 있습니다 .\( -type f -o -type d -o -type l \)

관련 정보