Hai.Adachinです。
今回はサーバトラブルのお話。
たまにトラブルで一つのディレクトリに
大量のファイル(~万個)が出来てたりすることがありますが、
開くと死にます。回避できるのはlsコマンドのオプションでいけるのです。
■トラブル例
メールキュー、キャッシュファイルなど膨大に溜まってヤバイことになってる。
削除するにもCPU圧迫、中身もlsで確認できない状況。
■ファイルの確認
とりあえずどんなファイルが入っているのか確認したいため、
lsコマンドでいいじゃないか。
・man lsで確認してみよう
1 |
-U do not sort; list entries in directory order |
こんなのがあります。
ちなみにlsはファイルの一覧を取得しsortを行うため遅くなります。
sortを行わない-Uを使えばフリーズが起こらないのです!!
1 2 3 4 |
$ ls -U hoge/ xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx |
■ファイルの削除
いきなり$ rm -rfで削除してしまうと、サーバに負荷がかかるためロアベが上がり死にます。
なのでsleepを使って5秒眠らせてファイルを削除してます。
1 |
$ cat hogehoge | perl -lne 'unlink; sleep(5) if $.%500==0' |
ディレクトリの削除はしないので、終わったら手動で対応します。
(2~3秒でも良さそう・・・)
■まとめ
$ ls -Uは凄かった。
大量ファイルができる前に、毎日夜に削除するスクリプトを使ってcronで回すのもイイデスネ!!!!
ちなみにどのファイルが多いのか調べるコマンドは以下。
1 |
$ du ディレクトリ -m --max-depth=1 | sort -nr |
参考:http://qiita.com/kitakitash/items/0a2350bf7e9b52da92fc
0件のコメント