[小ネタ][シェル芸]ディスク使用量が一番多いディレクトリを探す
みなさんこんにちは。(っ´∀`)っ ゃーこと濱田です。今年は140文字でおさまるワンライナーの紹介に力を入れていきたいと思います。今回は、LinuxやUNIXのサーバ運用でよくあるトラブル「ディスクがいっぱいだけど原因なんなの?」を一撃で調査することをテーマにしてみたいと思います。まずは以下のコマンドを叩いてみましょう。
[ (っ´∀`)っ@友の会 ~]$ cd $(sudo find `pwd` -type d | xargs du -sk | sort -n | tail -n 2 | head -n 1 | awk '{print $NF}')
[ (っ´∀`)っ@友の会 Pictures]$ pwd /home/(っ´∀`)っ/Pictures
ご覧のように、最初のワンライナー実行後にpwdコマンドで確認すると、カレントディレクトリが「Pictures」に移動したことがわかります。ホームディレクトリの下にある画像フォルダが一番充実しているということになりますね。それではもう一度、最初にご紹介したワンライナーを実行してみましょう。
[(っ´∀`)っ@localhost Pictures]$ cd $(sudo find `pwd` -type d | xargs du -sk | sort -n | tail -n 2 | head -n 1 | awk '{print $NF}') [(っ´∀`)っ@localhost 2013-01-06--10.05.57]$ pwd /home/(っ´∀`)っ/Pictures/2013-01-06--10.05.57 [(っ´∀`)っ@localhost 2013-01-06--10.05.57]$ ls IMG_0493.JPG IMG_0507.JPG IMG_0520.JPG IMG_0533.JPG IMG_0546.JPG IMG_0559.JPG IMG_0572.JPG IMG_0585.JPG IMG_0598.JPG IMG_0611.JPG IMG_0624.JPG IMG_0638.JPG IMG_0494.JPG IMG_0508.JPG IMG_0521.JPG IMG_0534.JPG IMG_0547.JPG IMG_0560.JPG IMG_0573.PNG IMG_0586.JPG IMG_0599.JPG IMG_0612.JPG IMG_0625.JPG IMG_0639.JPG IMG_0495.JPG IMG_0509.JPG IMG_0522.JPG IMG_0535.JPG IMG_0548.JPG IMG_0561.JPG IMG_0574.JPG IMG_0587.JPG IMG_0600.JPG IMG_0613.JPG IMG_0626.JPG IMG_0640.JPG IMG_0496.JPG IMG_0510.JPG IMG_0523.JPG IMG_0536.JPG IMG_0549.JPG IMG_0562.JPG IMG_0575.JPG IMG_0588.JPG IMG_0601.JPG IMG_0614.JPG IMG_0627.JPG IMG_0641.JPG IMG_0497.JPG IMG_0511.JPG IMG_0524.JPG IMG_0537.JPG IMG_0550.JPG IMG_0563.JPG IMG_0576.JPG IMG_0589.JPG IMG_0602.PNG IMG_0615.JPG IMG_0628.JPG IMG_0642.JPG IMG_0498.JPG IMG_0512.JPG IMG_0525.JPG IMG_0538.MOV IMG_0551.JPG IMG_0564.JPG IMG_0577.JPG IMG_0590.JPG IMG_0603.PNG IMG_0616.JPG IMG_0629.JPG IMG_0643.JPG IMG_0499.JPG IMG_0513.JPG IMG_0526.JPG IMG_0539.JPG IMG_0552.JPG IMG_0565.JPG IMG_0578.JPG IMG_0591.JPG IMG_0604.JPG IMG_0617.JPG IMG_0630.JPG IMG_0500.JPG IMG_0514.JPG IMG_0527.JPG IMG_0540.JPG IMG_0553.JPG IMG_0566.JPG IMG_0579.JPG IMG_0592.JPG IMG_0605.JPG IMG_0618.JPG IMG_0632.JPG IMG_0501.JPG IMG_0515.JPG IMG_0528.JPG IMG_0541.JPG IMG_0554.JPG IMG_0567.JPG IMG_0580.JPG IMG_0593.JPG IMG_0606.JPG IMG_0619.JPG IMG_0633.PNG IMG_0502.JPG IMG_0516.JPG IMG_0529.JPG IMG_0542.JPG IMG_0555.PNG IMG_0568.JPG IMG_0581.JPG IMG_0594.JPG IMG_0607.JPG IMG_0620.JPG IMG_0634.JPG IMG_0504.JPG IMG_0517.JPG IMG_0530.JPG IMG_0543.JPG IMG_0556.JPG IMG_0569.JPG IMG_0582.JPG IMG_0595.JPG IMG_0608.JPG IMG_0621.JPG IMG_0635.JPG IMG_0505.JPG IMG_0518.JPG IMG_0531.JPG IMG_0544.JPG IMG_0557.JPG IMG_0570.PNG IMG_0583.JPG IMG_0596.JPG IMG_0609.JPG IMG_0622.JPG IMG_0636.JPG IMG_0506.JPG IMG_0519.JPG IMG_0532.JPG IMG_0545.JPG IMG_0558.JPG IMG_0571.JPG IMG_0584.JPG IMG_0597.JPG IMG_0610.JPG IMG_0623.JPG IMG_0637.JPG
画像ディレクトリの中にいくつかディレクトリがある中で、容量を一番消費しているディレクトリに移動しています。もう一度ここでワンライナーを実行してみましょう。
[(っ´∀`)っ@localhost 2013-01-06--10.05.57]$ cd $(sudo find `pwd` -type d | xargs du -sk | sort -n | tail -n 2 | head -n 1 | awk '{print $NF}') [(っ´∀`)っ@localhost 2013-01-06--10.05.57]$ pwd /home/(っ´∀`)っ/Pictures/2013-01-06--10.05.57
カレントディレクトリが変わりません。つまり、 /home/(っ´∀`)っ/Pictures/2013-01-06–10.05.57 ディレクトリがホームディレクトリの中で一番ディスク容量が大きい、ということになります。それでは、ルートディレクトリ「/」から順に実行してみましょう。
[(っ´∀`)っ@localhost 2013-01-06--10.05.57]$ cd / [(っ´∀`)っ@localhost /]$ cd $(sudo find `pwd` -type d | xargs du -sk | sort -n | tail -n 2 | head -n 1 | awk '{print $NF}') [(っ´∀`)っ@localhost usr]$ cd $(sudo find `pwd` -type d | xargs du -sk | sort -n | tail -n 2 | head -n 1 | awk '{print $NF}') [(っ´∀`)っ@localhost share]$ cd $(sudo find `pwd` -type d | xargs du -sk | sort -n | tail -n 2 | head -n 1 | awk '{print $NF}') [(っ´∀`)っ@localhost locale]$ cd $(sudo find `pwd` -type d | xargs du -sk | sort -n | tail -n 2 | head -n 1 | awk '{print $NF}') [(っ´∀`)っ@localhost ru]$ cd $(sudo find `pwd` -type d | xargs du -sk | sort -n | tail -n 2 | head -n 1 | awk '{print $NF}') [(っ´∀`)っ@localhost LC_MESSAGES]$ cd $(sudo find `pwd` -type d | xargs du -sk | sort -n | tail -n 2 | head -n 1 | awk '{print $NF}') [(っ´∀`)っ@localhost LC_MESSAGES]$ pwd /usr/share/locale/ru/LC_MESSAGES [(っ´∀`)っ@localhost LC_MESSAGES]$ du -sh `pwd` 10M /usr/share/locale/ru/LC_MESSAGES [(っ´∀`)っ@localhost LC_MESSAGES]$ du -sk `pwd`/* | sort -n | tail -n 1 608 /usr/share/locale/ru/LC_MESSAGES/gcc.mo
ルートディレクトリから順にワンライナーを実行し、 /usr/share/locale/ru/LC_MESSAGES が一番ディスク容量を消費していることがわかりました。あとはここでduコマンドを叩けば、ディレクトリ内のディスク消費量がわかりますし、duで表示する単位をキロバイトに統一してソートすれば、ディレクトリ内でどのファイルが一番容量を消費しているか、がわかります。ね、簡単でしょ?
[amazonjs asin=”B007P71J9W” locale=”JP” title=”Intel SSD 330 Series Maple Crest 120GB MLC 2.5inch 9.5mm Reseller Box SSDSC2CT120A3K5″]