はじめに
AWS環境のLinuxのボリュームがディスクフルになってからSession Managerに接続できなくなった、みたいな経験はないですか?
急に接続できなくなると困りますよね。
今回はルートディレクトリ配下の容量を確認したいときのワンライナーを備忘としてまとめます。
コマンド
sudo find / -type f -size +100M -exec ls -lh {}\; | sort -k 5 -hr | head -n 20
コマンド詳細
コマンドの内容を分解して解説します。
まずこのコマンドが何をしているかというと/配下にある100MB以上あるファイルを上位20件だけ表示するコマンドです。
細かいオプションについても見ていきましょう。
find / -type f -size +100M
-
-type f: 対象をファイルに指定 -
-size +100M: 100MBより大きいファイルのみを対象
-exec ls -lh {} \;
findで見つけたファイルに対してls -lhを実行する
-
ls -lh:ls -lにhを加えることでファイルサイズを以下のように見やすい単位で表示する
1024 -> 1.0K
1048576 -> 1.0M
1073741824 -> 1.0G -
{}: 見つかったファイルパスが入る -
\;:-execの終了記号
sort -k 5 -hr
ls -lh の結果をソートする
-
k 5:ls -lhの結果の5列目(ファイルサイズ)をソート -
h:ls -lhでサイズ単位を見やすい単位で表示しているため、通常のsortを実行するのみではsortされないため、-hとすることで見やすい単位であったとしてもそれを認識してsortするように指定する -
-r: 降順
| head -n 20
上位20件だけ表示
このワンライナーを定期的に実行すればボリュームの状態を確認することができますね。
定期実行したい場合には、cron等を設定することでできますね。