彼女からは、おいちゃんと呼ばれています

ウェブ技術や日々考えたことなどを綴っていきます

サーバのディスク使用率のアラートが飛んできたときに使ったコマンド

運用している babyshark のサーバのディスク使用率が一定を超えたので New Relic からアラートが飛んできました。

-Rails + New Relic ならレスポンスタイム等のパフォーマンス監視が簡単にできるよ

それでディスク使用量やファイル容量を調べて対応したのですが、次回アラートが飛んできたときにはすっかり忘れている自信があるのでメモしておきます。

*1. ディスクの総容量、使用量、空き容量を確認する(df コマンド)

まず、何はともあれ、現在のディスクの総容量、使用量、空き容量を確認します。df コマンドを使います。

-Linuxコマンド集 - 【 df 】 ディスク・ドライブの使用量を表示する:ITpro

|shell| $ df -ah Filesystem Size Used Avail Use% マウント位置 /dev/sda1 8.9G 8.1G 383M 96% / proc 0 0 0 - /proc sysfs 0 0 0 - /sys devpts 0 0 0 - /dev/pts tmpfs 938M 0 938M 0% /dev/shm none 0 0 0 - /proc/sys/fs/binfmt_misc ||<

**-a, --all オプション

空のファイル・システムも含めたすべてのファイル・システムの情報を表示する

**-h オプション(human readable)

容量を適当な単位で表示する

*2. ディレクトリ内のファイル容量を確認する(du コマンド)

次に、不要なディレクトリでかつ容量の多いディレクトリを削除しようと考えました。ディレクトリ内のファイル容量を確認するには du コマンドを使います。

-Linuxコマンド集 - 【 du 】 ディレクトリ内のファイル容量を表示する:ITpro

だいたいあたりが付いていれば、-s オプションで、当該ディレクトリの総容量のみを確認。

|shell| $ du -hs /home/sites/babyshark 5.1G /home/sites/babyshark ||<

**-h オプション(human readable)

容量を適当な単位で表示する

**-s --summarize オプション

引数で指定したディレクトリの総容量のみを表示する

あたりが付いていなければ、-s オプションなしで実行します。このとき --max-depth オプションを付けると、表示されすぎて困るということを回避できます。僕はだいたい --max-depth=1 とか --max-depth=2 とかを使っています。

|shell| $ du -h --max-depth=1 /home/sites/babyshark 2.0G /home/sites/babyshark/releases 3.1G /home/sites/babyshark/shared 5.1G /home/sites/babyshark

$ du -h --max-depth=2 /home/sites/babyshark 100M /home/sites/babyshark/releases/20121211154832 100M /home/sites/babyshark/releases/20121203143419 103M /home/sites/babyshark/releases/20130105113605 100M /home/sites/babyshark/releases/20121208001900 101M /home/sites/babyshark/releases/20121224143518 100M /home/sites/babyshark/releases/20121208120002 99M /home/sites/babyshark/releases/20121202114741 99M /home/sites/babyshark/releases/20121202040632 101M /home/sites/babyshark/releases/20121231183439 99M /home/sites/babyshark/releases/20121202041102 103M /home/sites/babyshark/releases/20130106112717 101M /home/sites/babyshark/releases/20130101033940 103M /home/sites/babyshark/releases/20130106113254 100M /home/sites/babyshark/releases/20121202122655 103M /home/sites/babyshark/releases/20130105143032 100M /home/sites/babyshark/releases/20121215123041 101M /home/sites/babyshark/releases/20130105100912 106M /home/sites/babyshark/releases/20121223233949 101M /home/sites/babyshark/releases/20121229140519 101M /home/sites/babyshark/releases/20121224085513 2.0G /home/sites/babyshark/releases 744K /home/sites/babyshark/shared/thumbnails 12M /home/sites/babyshark/shared/db 1.5M /home/sites/babyshark/shared/imports 4.0K /home/sites/babyshark/shared/pids 2.9G /home/sites/babyshark/shared/log 2.9M /home/sites/babyshark/shared/assets 36K /home/sites/babyshark/shared/config 100M /home/sites/babyshark/shared/cached-copy 115M /home/sites/babyshark/shared/system 3.1G /home/sites/babyshark/shared 5.1G /home/sites/babyshark ||<

**--max-depth オプション

容量を適当な単位で表示する

*3. 容量が大きい順に並べる(sort コマンド)

削除したいディレクトリを決めるために、上記 2. の結果を、容量が大きい順に並べ替えてみます。パイプで sort コマンドへ渡します。

-Linuxコマンド集 - 【 sort 】 行を並び替える:ITpro

なお、sort するときは、du コマンドの -h オプションは使いません(使うと、正しく並ばなくなります)

|shell| $ du --max-depth=2 /home/sites/babyshark | sort -rn 5246240 /home/sites/babyshark 3187176 /home/sites/babyshark/shared 2951492 /home/sites/babyshark/shared/log 2059052 /home/sites/babyshark/releases 117280 /home/sites/babyshark/shared/system 107776 /home/sites/babyshark/releases/20121223233949 104832 /home/sites/babyshark/releases/20130106113254 104788 /home/sites/babyshark/releases/20130106112717 104676 /home/sites/babyshark/releases/20130105143032 104648 /home/sites/babyshark/releases/20130105113605 103200 /home/sites/babyshark/releases/20130105100912 103172 /home/sites/babyshark/releases/20130101033940 102700 /home/sites/babyshark/releases/20121231183439 102692 /home/sites/babyshark/releases/20121229140519 102660 /home/sites/babyshark/releases/20121224143518 102612 /home/sites/babyshark/releases/20121224085513 102220 /home/sites/babyshark/releases/20121215123041 102200 /home/sites/babyshark/releases/20121211154832 102176 /home/sites/babyshark/releases/20121208120002 101856 /home/sites/babyshark/releases/20121208001900 101564 /home/sites/babyshark/shared/cached-copy 101452 /home/sites/babyshark/releases/20121203143419 101420 /home/sites/babyshark/releases/20121202122655 101356 /home/sites/babyshark/releases/20121202114741 101320 /home/sites/babyshark/releases/20121202041102 101292 /home/sites/babyshark/releases/20121202040632 11612 /home/sites/babyshark/shared/db 2924 /home/sites/babyshark/shared/assets 1512 /home/sites/babyshark/shared/imports 744 /home/sites/babyshark/shared/thumbnails 36 /home/sites/babyshark/shared/config 4 /home/sites/babyshark/shared/pids ||<

**-n オプション

先頭の数字や記号("+" , "-" , "." など)を数値とみなして、ソートする。先頭の空白は無視する

**-r オプション

逆順にソートする

*4. 容量が多い順に 10件だけ表示させる(head コマンド)

結果を N件だけ表示させたいときは、head コマンドを使います。

-Linuxコマンド集 - 【 head 】 ファイルの先頭部分を表示する:ITpro

|shell| $ du --max-depth=2 /home/sites/babyshark | sort -rn | head -n 10 5246404 /home/sites/babyshark 3187340 /home/sites/babyshark/shared 2951656 /home/sites/babyshark/shared/log 2059052 /home/sites/babyshark/releases 117280 /home/sites/babyshark/shared/system 107776 /home/sites/babyshark/releases/20121223233949 104832 /home/sites/babyshark/releases/20130106113254 104788 /home/sites/babyshark/releases/20130106112717 104676 /home/sites/babyshark/releases/20130105143032 104648 /home/sites/babyshark/releases/20130105113605 ||<

**-n N, --lines N オプション

先頭からN行を表示する

以上です。よろしければ参考にしてください。ではでは。

*関連エントリー

-Rails + New Relic ならレスポンスタイム等のパフォーマンス監視が簡単にできるよ -Rails3、Twitter Bootstrap、Bootswatch を使ったレスポンシブなエロサイト「babyshark」をリリースしました