그래서 파일 시스템의 사용 가능한 inode 수가 적다는 경고 메시지를 상자 중 하나에서 모니터링 시스템으로부터 받았습니다.
df -i 출력은 이것을 보여줍니다 :
Filesystem       Inodes  IUsed    IFree IUse% Mounted on
/dev/xvda1       524288 422613   101675   81% /
보다시피 루트 파티션은 81 %의 inode를 사용합니다. 
나는 그것들이 모두 단일 디렉토리에서 사용되고 있다고 생각합니다. 그러나 그것이 어디에 있는지 어떻게 알 수 있습니까?
답변
나는 이 질문을 stackoverflow에서 보았지만 대답을 좋아하지 않았으며 실제로 U & L에 관한 질문입니다.
기본적으로 inode는 파일 시스템의 각 파일에 사용됩니다. 따라서 inode가 부족하면 일반적으로 작은 파일이 많이 있습니다. 따라서 문제는 “어떤 디렉토리에 많은 파일이 있는가?”가됩니다.
이 경우 관심있는 파일 시스템은 루트 파일 시스템 /이므로 다음 명령을 사용할 수 있습니다.
find / -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n
그러면 파일 시스템의 모든 디렉토리 목록과 해당 디렉토리의 파일 수 (및 서브 디렉토리)가 덤프됩니다. 따라서 파일 수가 가장 많은 디렉토리가 맨 아래에 있습니다.
제 경우에는 다음이 나타납니다.
   1202 /usr/share/man/man1
   2714 /usr/share/man/man3
   2826 /var/lib/dpkg/info
 306588 /var/spool/postfix/maildrop
기본적으로 /var/spool/postfix/maildrop모든 inode를 소비합니다.
이 답변에는 내가 생각할 수있는 세 가지주의 사항이 있습니다. 경로에 줄 바꿈이있는 것은 올바르게 처리하지 않습니다. 내 파일 시스템이 줄 바꿈 아무 파일이 없으며, 이것은 단지 인간의 소비를 위해 사용되기 때문에, 잠재적 인 문제가 해결 가치가 아니라는 것을 알고 (하나는 항상을 대체 할 수 \n와 함께 \0사용할 sort -z이상). 파일이 많은 디렉토리에 분산되어 있는지도 처리하지 않습니다. 이것은 아니지만 가능성이 위험하다고 생각합니다. 또한 동일한 파일에 대한 하드 링크 (하나의 inode 만 사용)를 여러 번 계산합니다. 다시, 오 탐지 않을 것
내가 stackoverflow 답변에 대한 답변을 좋아하지 않는 주요 이유는 모두 파일 시스템 경계를 넘기 때문입니다. 내 문제는 루트 파일 시스템에 있었기 때문에 마운트 된 모든 단일 파일 시스템을 통과한다는 것을 의미합니다. -xdevfind 명령을 던지면 제대로 작동하지 않습니다. 
예를 들어 가장 많이 답한 답변은 다음과 같습니다.
for i in `find . -type d `; do echo `ls -a $i | wc -l` $i; done | sort -n
이것을 대신에 변경하면
for i in `find . -xdev -type d `; do echo `ls -a $i | wc -l` $i; done | sort -n
/mnt/foo마운트 이지만 루트 파일 시스템의 디렉토리이기도하므로에 로 들어간 다음에 마운트되어 다이빙으로 find . -mount -type d전달됩니다 ls -a $i.
find내 대답에 대신 산에있는 모든 단일 파일의 디렉토리를 나열합니다. 기본적으로 다음과 같은 파일 구조가 있습니다.
/foo/bar
/foo/baz
/pop/tart
우리는 결국
/foo
/foo
/pop
따라서 중복 행 수를 세면됩니다.
답변
이것은 asker의 요청에 따라 여기 에서 다시 게시됩니다 .
du --inodes -S | sort -rh | sed -n \
        '1,50{/^.\{71\}/s/^\(.\{30\}\).*\(.\{37\}\)$/\1...\2/;p}'
그리고 동일한 파일 시스템에 머 무르려면 다음을 수행하십시오.
du --inodes -xS
다음은 예제 출력입니다.
15K     /usr/share/man/man3
4.0K    /usr/lib
3.6K    /usr/bin
2.4K    /usr/share/man/man1
1.9K    /usr/share/fonts/75dpi
...
519     /usr/lib/python2.7/site-packages/bzrlib
516     /usr/include/KDE
498     /usr/include/qt/QtCore
487     /usr/lib/modules/3.13.6-2-MANJARO/build/include/config
484     /usr/src/linux-3.12.14-2-MANJARO/include/config
LS와 함께 지금 :
몇몇 사람들은 최신 coreutils가 없으며 –inodes 옵션을 사용할 수 없다고 언급했습니다. 그래서 여기 있습니다 :
ls ~/test -AiR1U |
sed -rn '/^[./]/{h;n;};G;
    s|^ *([0-9][0-9]*)[^0-9][^/]*([~./].*):|\1:\2|p' |
sort -t : -uk1.1,1n |
cut -d: -f2 | sort -V |
uniq -c |sort -rn | head -n10
궁금한 점이 있다면, 그 지루한 부분의 마음과 영혼은 각 재귀 적 검색 결과에서 찾은 디렉토리 이름으로 regex대체 됩니다. 거기에서 반복되는 inode 번호를 누른 다음 반복되는 디렉토리 이름을 세고 그에 따라 정렬하면됩니다.filenamels's
이 -U옵션은 특히 정렬되지 않고 정렬 순서에 따라 디렉토리 목록을 원래 순서로, 즉 inode숫자 로 표시한다는 점에서 특히 유용 합니다 .
물론 -1파일 이름에 줄 바꿈을 포함하거나 목록을 구문 분석 할 때 발생할 수있는 놀랍도록 불행한 문제에 관계없이 한 줄에 단일 결과를 보장한다는 점에서 매우 유용합니다.  
그리고 물론 -A모든 그리고 -iinode와 -R재귀를 위해 그리고 그것은 길고 짧습니다.
이것의 기본 방법은 ls의 파일 이름을 sed에 포함 된 디렉토리 이름으로 바꾸는 것입니다. 그런 다음에 … 글쎄, 나는 약간 퍼지 해요. 여기에서 볼 수 있듯이 파일을 정확하게 계산하는 것이 확실합니다.
% _ls_i ~/test
> 100 /home/mikeserv/test/realdir
>   2 /home/mikeserv/test
>   1 /home/mikeserv/test/linkdir
이것은 du명령 과 거의 동일한 결과를 제공합니다 .
DU :
15K     /usr/share/man/man3
4.0K    /usr/lib
3.6K    /usr/bin
2.4K    /usr/share/man/man1
1.9K    /usr/share/fonts/75dpi
1.9K    /usr/share/fonts/100dpi
1.9K    /usr/share/doc/arch-wiki-markdown
1.6K    /usr/share/fonts/TTF
1.6K    /usr/share/dolphin-emu/sys/GameSettings
1.6K    /usr/share/doc/efl/html
LS :
14686   /usr/share/man/man3:
4322    /usr/lib:
3653    /usr/bin:
2457    /usr/share/man/man1:
1897    /usr/share/fonts/100dpi:
1897    /usr/share/fonts/75dpi:
1890    /usr/share/doc/arch-wiki-markdown:
1613    /usr/include:
1575    /usr/share/doc/efl/html:
1556    /usr/share/dolphin-emu/sys/GameSettings:
include프로그램이 처음 보는 디렉토리에 달려 있다고 생각합니다 . 파일이 같고 하드 링크되어 있기 때문입니다. 위의 것을 좋아합니다. 나는 그것에 대해 틀릴 수 있습니다-그리고 나는 정정을 환영합니다 …
뒤 데모
% du --version
> du (GNU coreutils) 8.22
테스트 디렉토리를 작성하십시오.
% mkdir ~/test ; cd ~/test
% du --inodes -S
> 1       .
일부 하위 디렉토리 :
% mkdir ./realdir ./linkdir
% du --inodes -S
> 1       ./realdir
> 1       ./linkdir
> 1       .
일부 파일을 작성하십시오.
% printf 'touch ./realdir/file%s\n' `seq 1 100` | . /dev/stdin
% du --inodes -S
> 101     ./realdir
> 1       ./linkdir
> 1       .
일부 하드 링크 :
% printf 'n="%s" ; ln ./realdir/file$n ./linkdir/link$n\n' `seq 1 100` |
    . /dev/stdin
% du --inodes -S
> 101     ./realdir
> 1       ./linkdir
> 1       .
하드 링크를보십시오 :
% cd ./linkdir
% du --inodes -S
> 101
% cd ../realdir
% du --inodes -S
> 101
그들은 혼자 계산되지만 한 디렉토리 위로 올라갑니다 …
% cd ..
% du --inodes -S
> 101     ./realdir
> 1       ./linkdir
> 1       .
그런 다음 아래에서 실행 스크립트를 실행했습니다.
> 100     /home/mikeserv/test/realdir
> 100     /home/mikeserv/test/linkdir
> 2       /home/mikeserv/test
그리고 Graeme ‘s :
> 101 ./realdir
> 101 ./linkdir
> 3 ./
따라서 이것이 inode를 계산하는 유일한 방법은 inode에 의한 것임을 보여줍니다. 파일을 세는 것은 inode를 세는 것을 의미하기 때문에 inode를 두 번 세는 것은 불가능합니다. 파일을 정확하게 세는 inode는 두 번 이상 세는 것이 불가능합니다.
답변
SO Q & A에서이 답변을 사용했습니다. 제목 : 모든 inode는 어디에 사용됩니까? NAS가 약 2 년 전에 소진되었을 때 :
$ find . -type d -print0 \
    | while IFS= read -rd '' i; do echo $(ls -a "$i" | wc -l) "$i"; done \
    | sort -n
예
$ find . -type d -print0 \
    | while IFS= read -rd '' i; do echo $(ls -a "$i" | wc -l) "$i"; done \
    | sort -n
...
110 ./MISC/nodejs/node-v0.8.12/out/Release/obj.target/v8_base/deps/v8/src
120 ./MISC/nodejs/node-v0.8.12/doc/api
123 ./apps_archive/monitoring/nagios/nagios-check_sip-1.3/usr/lib64/nagios
208 ./MISC/nodejs/node-v0.8.12/deps/openssl/openssl/doc/crypto
328 ./MISC/nodejs/node-v0.8.12/deps/v8/src
453 ./MISC/nodejs/node-v0.8.12/test/simple
장치의 아이 노드 확인
NAS에 따라 모든 기능을 갖춘 df명령을 제공하지 않을 수 있습니다 . 따라서이 경우 tune2fs대신 대신 사용할 수 있습니다 .
$ sudo tune2fs -l /dev/sda1 |grep -i inode
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Inode count:              128016
Free inodes:              127696
Inodes per group:         2032
Inode blocks per group:   254
First inode:              11
Inode size:           128
Journal inode:            8
Journal backup:           inode blocks
파일 시스템 경계를 넘어
-xdev스위치를 사용하여 find검색을 시작하는 장치로만 검색 범위를 좁힐 수 있습니다 .
예
/homeNAS에서 NFS 공유를 통해 디렉토리 자동 마운트를 한다고 가정 해 봅시다 . 이름은 멀더입니다.
$ df -h /home/sam
Filesystem            Size  Used Avail Use% Mounted on
mulder:/export/raid1/home/sam
                      917G  572G  299G  66% /home/sam
마운트 지점은 여전히 시스템의 로컬 위치로 간주됩니다.
$ df -h /home/ .
Filesystem            Size  Used Avail Use% Mounted on
-                        0     0     0   -  /home
/dev/mapper/VolGroup00-LogVol00
                      222G  159G   52G  76% /
이제 시작할 때 find:
$ find / -xdev  | grep '^/home'
/home
/home다른 장치에 있기 때문에 자동 마운트 된 컨텐츠를 찾지 못했습니다!
파일 시스템 유형
당신은 스위치를 활용할 수 find, -fstype유형의 파일 시스템을 제어 할 find로 볼 것이다.
   -fstype type
          File is on a filesystem of type type.  The valid filesystem types
          vary among different versions of Unix; an incomplete list of
          filesystem  types that are accepted on some version of Unix or
          another is: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K.  You can use
          -printf with the %F directive to see the types of your
          filesystems.
예
어떤 파일 시스템이 있습니까?
$ find . -printf "%F\n" | sort -u
ext3
따라서 이것을 사용하여 교차를 제어 할 수 있습니다.
ext3 만
$ find . -fstype ext3 | head -5
.
./gdcm
./gdcm/gdcm-2.0.16
./gdcm/gdcm-2.0.16/Wrapping
./gdcm/gdcm-2.0.16/Wrapping/CMakeLists.txt
nfs 만
$ find . -fstype nfs | head -5
$
ext3 및 ext4
$ find . -fstype ext3 -o -fstype ext4 | head -5
.
./gdcm
./gdcm/gdcm-2.0.16
./gdcm/gdcm-2.0.16/Wrapping
./gdcm/gdcm-2.0.16/Wrapping/CMakeLists.txt
답변
사용 된 inode를 찾는 명령 :
for i in /*; do echo $i; find $i |wc -l | sort ; done
답변
에 대한 자세한 inode 사용법을 나열하려면 /다음 명령을 사용하십시오.
echo "Detailed Inode usage for: $(pwd)" ; for d in `find -maxdepth 1 -type d |cut -d\/ -f2 |grep -xv . |sort`; do c=$(find $d |wc -l) ; printf "$c\t\t- $d\n" ; done ; printf "Total: \t\t$(find $(pwd) | wc -l)\n"
답변
최대 upvotes로 확실히 대답하면 리눅스와 유닉스에서 inode의 개념을 이해하는 데 도움이되지만 디스크에서 inode를 삭제하거나 제거하는 실제 문제를 처리하는 데 실제로 도움이되지는 않습니다. 우분투 기반 시스템 에서이 작업을 수행하는 간단한 방법은 원치 않는 Linux 커널 헤더 및 이미지를 제거하는 것입니다.
sudo apt-get autoremove
당신을 위해 그렇게 할 것입니다. 필자의 경우, inode 사용은 78 %로 경고를 받았습니다.
$ df -i
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/xvda1     524288 407957 116331   78% /
none           957443      2 957441    1% /sys/fs/cgroup
udev           956205    388 955817    1% /dev
tmpfs          957443    320 957123    1% /run
none           957443      1 957442    1% /run/lock
none           957443      1 957442    1% /run/shm
none           957443      5 957438    1% /run/user
sudo apt-get autoremove명령을 실행 한 후 29 %로 감소했습니다.
$ df -i
Filesystem     Inodes  IUsed  IFree IUse% Mounted on
/dev/xvda1     524288 150472 373816   29% /
none           957443      2 957441    1% /sys/fs/cgroup
udev           956205    388 955817    1% /dev
tmpfs          957443    320 957123    1% /run
none           957443      1 957442    1% /run/lock
none           957443      1 957442    1% /run/shm
none           957443      5 957438    1% /run/user
이것은 나의 시간을 절약 한 나의 관찰이었습니다. 사람들은 이것보다 더 나은 해결책을 찾을 수 있습니다.
답변
다음 명령을 사용하여 더 빠르고 쉽게 드릴 다운 할 수 있습니다.
$ sudo du -s --inodes * | sort -rn
170202  var
157325  opt
103134  usr
53383   tmp
<snip>
그런 다음 var예를 들어 디렉토리를 사용하는 큰 inode가 무엇인지 확인할 수 있습니다.