回答:
ncdu(http://dev.yorhel.nl/ncdu)がこれに非常に役立つことがわかりました。
確かにもっと手の込んだ方法がありますが、私が覚えているのは
du --max-depth = 1 -h /
次に、ほとんどのスペース(du --max-depth=1 -h /yourdir)
を消費するディレクトリを取得し、犯人が見つかるまでさらに深く進みます。
出力をサイズでソートし、人間が読める形式を気にしない場合は、次のこともできます。du --max-depth=1 /your_dir | sort -n
与えるGT5試して。
df -kは、どのfsが問題であるかを示します。次に、その最上位ディレクトリにcdして、du -xk |を実行します。sort -n | tail -25これは、太陽9以前の場合、ソートされた上位25のディレクトリを表示し、xをdに置き換えます。
ファイルは書き込み中に削除できるため、作成プロセスの実行中はディスクスペースを使用しますが、ファイル名はありません。
これにより、通常のツールでは検索できなくなります。lsofを使用して、どのプロセスにファイルが開いているかを調査できます。
/usr/sbin/lsof | grep deleted
これを取得するために使用します。
システムでソフトウェアを実行できる場合、xdiskusageは、どのディレクトリ/ファイルがスペースを消費しているかをグラフィカルに表示します。非常に便利です。
KDEには似たようなものが含まれていると思います。
テキストのみで、追加のソフトウェアをインストールできない場合は、du
おそらくクリエイティブな使用でもそこに到達するでしょう。
head
との順序を変更しない限り、これは機能しませんsort
。また、フォーマット機能を使用する必要があります。
次のコマンドを使用して、どのファイルまたはフォルダーがスペースを取りすぎているかを見つけることができます。
たとえば、現在のフォルダーの上位20個のディレクトリを表示するには、次のワンライナーを使用します。
du -ah . | sort -rh | head -20
または:
du -a . | sort -rn | head -20
現在のディレクトリ内の上位20個の最大ファイル(再帰的に)の場合:
ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20
または人間が読めるサイズの場合:
ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20
適切OSX / BSDの作業に2番目のコマンド(よう
sort
がない-h
)、あなたがインストールする必要がありますsort
からcoreutils
。次に、binフォルダーをに追加しますPATH
。
これらのコマンドをエイリアスとして定義できます(例:などのrcファイルに追加.bash_profile
):
alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
次に、実行すると思われるフォルダ内で実行するbig
かbig-files
、フォルダ内で実行します(例:)/home
。
データベースサーバー上のいくつかの不正なプロセスを追跡するために、私がまとめたものがあります。rabbitfinder
#!/bin/sh
tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp
それはちょっと派手で非常に堅牢ではありませんが、このように動作します:
ps -lFp
どのプロセスがそれらを所有しているかをファイルに表示します
user@poseidon:~$ tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser -f | xargs ps -lFp
./tmp/output:
F S UID PID PPID C PRI NI ADDR SZ WCHAN RSS PSR STIME TTY TIME CMD
0 R 1000 14310 14275 23 80 0 - 1072 - 748 1 22:19 pts/2 00:00:06 dd if /dev/zero of ./output bs 1024 count 10000000