ルートパーティションで最近どのファイルとディレクトリがディスク容量を占有しているかを確認するための信頼できる方法はありますか?

ルートパーティションで最近どのファイルとディレクトリがディスク容量を占有しているかを確認するための信頼できる方法はありますか?

私はsudo du -csh *(ルートディレクトリから)sudo find /usr/lib/ -type f -printf "%s\t%p\n" | sort -n | tail -10 sudo du -a / --exclude=/media --exclude=/home | sort -n -r | head -n 100同様のコマンドを試しました。私はこれについて何かを探しています。最近ディスク領域の使用量と有効安定して(私のユースケースでも)。

これの問題は、「デバイスに余分なスペースがないため」実行できないことです。ディスクスペースを解放した場合(たとえば、ブリーチビットを実行したり、不要な大規模で不要なパッケージを削除したり、/ tmp /から一部のファイルを削除したりした場合)、その後はすぐにスペースも占有されます。/var/lib/dockerを移動しました。サイズは数ギガバイトに達し、後で解放されました。今何かがそのギガバイトのディスク容量を占めているようです。

2番目の問題は、空きディスク容量があるときにこれらのコマンドを実行すると、現在どのファイルとディレクトリが新しく不要なのかを簡単に識別できないことです。最大のディレクトリは/usr/shareのようです。

しかし、sudo du -csh /usr/share/* | grep "G"7GBしか表示されないので、大きすぎません。別のパーティションに保存した初期出力には、sudo du -ah / --exclude=/media --exclude=/proc --exclude=/home | sort -n -r | head -n 1001MBファイル(/usr/share/にあるファイルを含む)のみが表示されました。


最近追加された最大のファイルとディレクトリのリストを素早く素早く出力する良い方法はありますか?たぶんこれを担当するプロセスも含めることができますか?可能であれば、コマンドを実行する別の/tmp/ディレクトリを指定できると便利です。私はDebian10 / KDEを使用しています。

最近ディスクスペースを占めているアイテムを一覧表示する簡単で信頼できる方法がここで役に立ちます。

修正する:事前にインストールされた指定されたファイルサイズより大きい最近変更されたファイルをルートディレクトリに表示できます。探す。ディレクトリを除外したり、「veracryptがすでに実行されています」というメッセージのみが表示されるため、veracryptを起動してパーティションをマウント解除することはできません。しかし、まだ問題のファイルを見つけることができます。

コマンドを中断してもディスクスペースが解放されないコマンドを1つだけ実行するkonsoleのパブリックインスタンスである/proc/pid/task/pid/fd。 konsoleウィンドウとすべてのタブを閉じた後、数GBが必要です。空きディスク容量。

答え1

上記の簡単なコマンドを使用して、最後に変更されたファイルとディレクトリをインポートできますmtime

# Get files/dirs modified during the last 15 days and then desc  sort with disk usage and print the first 10 lines
find / -mtime -15  | xargs -I {} du -sm {} | sort -rn | head -10
# Get files/dirs modified during the last 60 minutes and then desc sort with disk usage and print the first 10 lines
find / -mmin -60 | xargs -I {} du -sm {} | sort -rn | head -10
# Get files/dirs modified between 2020-12-18 and 2020-12-19 then desc sort with disk usage  and print the first 10 lines
find / -newermt 2020-12-18 ! -newermt 2020-12-19 | xargs -I {} du -sm {} | sort -rn | head -10

システムが作成時間を保存できる場合は、代わりに使用できますcrtime

crtimeまず設定したファイルを確認してください。

## Output should be different than - sign
stat -c '%w' <file>

Bその後、オプションと同じfindコマンドを使用できますBirth Time

# Get files/dirs **created** between 2020-12-18 and 2020-12-19 then desc  sort with disk usage and print the first 10 lines
find / -newerBt 2020-12-18 ! -newerBt 2020-12-19 | xargs -I {} du -sm {} | sort -rn | head -10

ファイルシステムはこれを処理できますが、Birth Timestatコマンドに表示されない場合は、ファイルを保存したデバイスのレベルを直接確認できます。

# Getting the inode number
ls -i <file>
# Then get crtime 
debugfs -R 'stat <inode_no>' <device>

@PascalVKootenによって書かれたPythonパッケージがあります。スタックオーバーフロースレッド生成時間を取得するために使用できる呼び出しが再帰的crtime(テストされていない)かどうかはわかりませんが、次の出力を提供します。

1552938281  /home/pascal/crtime/.gitignore
1552938285  /home/pascal/crtime/README.md
1552938282  /home/pascal/crtime/crtime
1552938288  /home/pascal/crtime/deploy.py

その後、タイムスタンプを降順に並べ替えて日付/時刻に変換できます(必要な場合)。

sudo crtime ./ | awk '{print$1}' | sort -rn |  xargs -I {} date -d @{}

Mon Mar 18 20:44:48 +01 2019
Mon Mar 18 20:44:45 +01 2019
Mon Mar 18 20:44:42 +01 2019
Mon Mar 18 20:44:41 +01 2019

最後に、特定のファイルまたはディレクトリを編集した最後のプロセスを取得するには、カスタムauditctlルールを有効にして設定しますausearch

同じことを行うこともできますが、inotify-toolsルートファイルシステム全体で実行すると、メモリ使用量に深刻な影響を与えると思います。

Lsof最新のファイルではなく、現在開いているファイルが含まれているため機能しません。

また、サードパーティ製のツールにアクセスできる場合は、ncdu 拡張情報モードを有効にして追加の属性で並べ替えると、mtime出力をファイルにエクスポートできます。

関連情報