お使いのOSによって異なります。一部の (すべて?) Linux ディストリビューションには /etc/cron.hourly
ディレクトリがあります。 1 時間ごとに実行される cron ジョブを配置できます。
他の人はディレクトリ /etc/cron.d/
を持っています .そこには、crontab エントリの通常の cron 設定を使用して、特別なユーザーとして実行される cron ジョブを配置できます (ユーザー名を指定する必要があります)。
/etc/cron.daily/
で標準のログ ローテーション スクリプトの代わりにこれらのいずれかを使用する場合 そのスクリプトをそこにコピーして cp /dev/null
元の位置に。それ以外の場合は、logrotate patch-update によって再アクティブ化されます。
適切な時間ごとのローテーションのために、dateext
にも注意してください。 ディレクティブはではない 設定。その場合、デフォルトでは、最初にローテーションされたファイルに YYYYMMDD のような現在の日付の拡張子が付けられます。次に、同じ日に 2 回目の logrotate がアクティブになると、size
しきい値を超えました。
その理由は、ローテーションされるファイルの新しい名前が既に存在し、logrotate がコンテンツを既存の古いファイルに追加しないためです。たとえば、RHEL と CentOS では、dateext
ディレクティブはデフォルトで /etc/logrotate.conf
に与えられます .その行を削除またはコメントした後、ローテーションされたファイルは rotate
に到達するまで拡張子として実行中の番号を取得します。 価値。このようにして、1 日に複数のローテーションを実行できます。
logrotate
の場所を変更する場合は、ニルスの回答に追加するだけです スクリプトを Debian または Ubuntu ボックスで使用する場合は、おそらく dpkg-divert
を使用する方が安全です ファイルをコピーして /dev/null
をコピーする代わりに 元の位置へ 例:
dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate
もう 1 つのオプションは、logrotate コマンドを crontab リストに追加することです。その後、1 時間ごとに実行されます。
crontab -e
以下の行を crontab リストに追加
0 * * * * /usr/sbin/logrotate /etc/logrotate.d/my-hourly-file