나는 다음과 같은 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 \)