
アプリケーションには、大量のログ出力が作成されるログ ディレクトリがあります。このログ ディレクトリ内のファイル構造は次のようになります。
localhost:/var/log/myapp # ls
appClient22334.a appClient22336.a appClient22338.a
appClient22334.b appClient22336.b appClient22338.b
appClient22334.c appClient22336.c appClient22338.c
appClient22335.a appClient22337.a appClient22339.a
appClient22335.b appClient22337.b appClient22339.b
appClient22335.c appClient22337.c appClient22339.c
アプリケーションは毎日何百ものファイルを生成し、それらはすべて保存されます。数字は増加します。
ほとんどの場合、私は logrotate を使用して毎日ログ ファイルを保存および圧縮していますが、この場合、これをどのように実行できるかわかりません。
理想的な解決策は次のようなものでしょう
appClient.20120324.gzip
appClient.20120325.gzip
appClient.20120326.gzip
logrotate を使用しながらこれを実行できるかどうか (おそらく賢い使用方法でしょうかprerotate
?)、または特定の bash スクリプトを記述する方が高速/簡単かどうか、誰か私を正しい方向に導いてもらえませんか?
答え1
物事をシンプルにするために、私は毎日 cron ジョブを実行し、昨日のログ ファイルを 1 つのファイル (例: yesterday.log) に連結し、成功したらそれらを削除し、次に logrotate を実行してそのファイルの名前を変更して圧縮します。logrotate を使用してすべてのタスクを強制的に実行できるかもしれませんsharedscripts
が、そうは思えませんし、それを理解しようとして時間を無駄にすることもないでしょう。