내 루트 파일 시스템에 inode가 부족합니다. 디스크 공간 문제라면 이를 사용하여 du -s
공간이 어디로 가는지에 대한 최상위 개요를 얻은 다음 디렉토리 트리를 따라 특정 위반자를 찾습니다. inode에 해당하는 옵션이 있습니까?
이 질문에 대한 대답사용량이 더 높은 개별 디렉터리가 지적되지만 내 경우에는 이것이 좋지 않습니다. 예를 들어 Linux 소스 디렉터리는 /usr/src/linux-4.0.5 52183
.
답변1
버전 8.22부터 GNU coreutils(Linux, Cygwin)를 사용하면 du --inodes
lcd047에서 지적한 대로 를 사용할 수 있습니다.
최신 GNU coreutils가 없고 트리에 하드 링크가 없거나 각 링크가 한 번 계산되는지 상관하지 않는 경우 필터링된 출력으로 동일한 숫자를 얻을 수 있습니다 find
. 동등한 것을 원하는 경우 du -s
, 즉 최상위 디렉토리만 원하는 경우 해야 할 일은 각 최상위 디렉토리 이름의 줄 수를 세는 것뿐입니다. 파일 이름에 줄 바꿈이 없고 현재 디렉터리에 점이 아닌 디렉터리만 원한다고 가정합니다.
find */ | sed 's!/.*!!' | uniq -c
각 디렉터리(하위 디렉터리 포함)의 개수와 함께 모든 디렉터리의 출력을 표시하려면 몇 가지 산술 연산을 수행해야 합니다.
find . -depth | awk '{
# Count the current depth in the directory tree
slashes = $0; gsub("[^/]", "", slashes); current_depth = length(slashes);
# Zero out counts for directories we exited
for (i = previous_depth; i <= current_depth; i++) counts[i] = 0;
# Count 1 for us and all our parents
for (i = 0; i <= current_depth; i++) ++counts[i];
# We don´t know which are regular files and which are directories.
# Non-directories will have a count of 1, and directories with a
# count of 1 are boring, so print only counts above 1.
if (counts[current_depth] > 1) printf "%d\t%s\n", counts[current_depth], $0;
# Get ready for the next round
previous_depth = current_depth;
}'