web-dev-qa-db-ja.com

crontabからログファイルをローテーションする方法は?

私のcrontabにこのディレクティブがあります:

* * * * * /var/www/github/mysite/bin/email email worker await --pid=/var/run/mysite-worker-email.pid >> /tmp/mysite-worker-email.log

すべてのログが/ tmp/mysite-worker-email.logに書き込まれていることがわかるように、そのファイルをローテーションできる方法はありますか?

6
DomingoSL

マシンにroot権限があると仮定します。共有ホスティングを使用している場合、SFはとにかく間違ったサイトです。

/etc/logrotate.confおよび/etc/logrotate.dが存在するかどうかを確認します。一致する場合は、継ぎ手名が付いたファイルを追加します。 site_emailから/etc/logrotate.dに、次のようなコンテンツを含めます。

/tmp/mysite-worker-email.log {
   compress
   daily 
   missingok
   rotate 7
}

これにより、ログファイルが毎日ローテーションされ、過去7日間の圧縮コピーが保持されます。 logrotateにはさらに多くのオプションがあります。それらすべてについてはman logrotate.confを参照してください。

注:ログファイルを/tmpに保持することはお勧めできません。特に/var/log/がクリーンアップされたときにログファイルのコピーをさらに保持し、削除されたくない場合は、それらを/tmpに入れます。

15
Sven