-
ID:Laard2 さんの質問

サーバにキャッシュが多く溜まっており定期的に削除したいです。

シェルスクリプトでcrontabを利用して削除しているのですが、
キャッシュが多いため一度の実行で削除する数を制限したいです。

現在は、
find ./cache -name \*.cache | xargs rm
で削除しているのですが、
例えば、200ファイル削除したら終了するといったことはどうすれば出来るのでしょうか?

みんなの回答 3 件

ID:v78SVj さんの回答

それならもうPHPとかで作成した方が良いと思うよ。カスタマイズしやすいし。

ID:/RIdJs さんの回答

200ファイル消したらーってランダムで消すんですか?
作成したばかりのキャッシュを消してもまた作られると思うので、
ディレクトリの階層を日付で増やしてある程度日が過ぎたものをディレクトリ毎削除していくとかどうっすか
./cache/01
./cache/02
./cache/03

ID:i4qCRv さんの回答

シェル初心者が挑戦してみた。

findは条件に一致したファイルのパスを返す。
これをどうにかしてファイル更新日でソートできれば……
→lsならソートできる!
ソート結果の上から200行だけを表示できれば……
→headつかえばいける!

というわけで、
「古いファイルから順番に200件だけ消す」
コマンドはこんな感じになりました。

find ./cache -name \*.cache | xargs ls -tr1 | head -n 200 | xargs rm

ひょっとしたらもっと効率的に消す方法があるかもしれないけど知らん
もっといい方法があったら教えろ……てください

ID:i4qCRv

書いてから思ったけど、新しい順に並べて下から表示すれば1字減るのかな?
find ./cache -name \*.cache | xargs ls -t1 | tail -n 200 | xargs rm

最終更新日:2013-12-08 (2,963 views)

関連するトピックス

ページ上部に戻る