想定している悲惨な環境
- Webサーバーの/var/log以下にアクセスログが世代管理されずに放置されているので圧縮したい
- 消すにしろ、圧縮するにしろ、本番環境なので一気にまとめてやるとI/OとかCPUとか死んでしまう(10年プレーヤーの物理サーバー辛い)
- 意外とアクセスある
xargsの便利なpオプションで丁寧に
xargsにはp(スモールピー)オプションがあり、コマンド実行するかどうかを聞いてくれる。yもしくはYを押すと実行してくれるので、topコマンドで負荷見ながら実行してあげるといいと思います。nオプションを指定しておかないと元の木阿弥になるパターンがあるので忘れずに。
find . -name "*.log" | xargs -p -n1 gzip
圧縮済みのファイルとかが散らばっている場合には除外してあげてください。
find . -name "*.log" ! -name "*.gz" | xargs -p -n1 gzip
か弱い本番で死にかけるやり方
find . -name "*.log" -exec rm {} \;
とかやると死ぬ。
find . -name "*.log" -exec gzip {} \;
とかやっても死ぬ。
もし、か弱いサーバーに出会ったり作ってしまった場合にご活用くださいませ。