0

私は、毎時、毎時5分にperlスクリプトを実行するためのcrontabセットアップを持っています(つまり、2:05、3:05、10:05など):

5 * * * * perl /abs/path/to/my/script.pl >> /abs/path/two/my/script-log.txt 2>&1

ご覧のとおり、STDOUTとSTDERRの両方を同じログファイルにリダイレクトしています。

Perlスクリプト、crontabエントリのいずれかをリファクタリングするか、必要な新しいコード/スクリプトを追加して、毎晩深夜にscript-log.txtクリア/フラッシュ/空になるように依頼されました。

つまり、毎晩、深夜にscript-log.txt20MBのテキストが含まれている場合は、テキストが何も(0バイト)含まれないようにクリーンアップし、午前12:05にcrontabが起動して実行されscript.pl、同じscript-log.txtログファイルにテキストを追加し始めます。

Linux / Perlの魔法を使ってcrontabエントリを変更して、このような「毎日のローリングログファイル」を設定する方法があれば、非常に簡単になります最悪のシナリオでは、いつでも新しいスクリプトを記述してscript-log.txt、深夜に実行するようにパージおよびcronすることができます。しかし、私の高官はまだ別のcronジョブを持っていないことを強く望んでおり、エントリ自体からこれを行う方法を探しています(可能な場合)。

実際には、このように機能するエントリが多数あるため、「パージスクリプト」を記述して、深夜に実行するようにクローンを作成する際の問題は、生成する他のスクリプトを追加/削除するときに、パージスクリプトを常に更新することです。これらの種類のログファイル。したがって、このようなパージをエントリレベルで設定できる場合、各cronエントリはそれ自体をクリーンアップします。事前に洞察/ポインタ/提案をありがとう。

4

1 に答える 1

3

logrotateを調べてみてください。

于 2012-12-12T21:07:31.167 に答える