logrotate
構成ファイルを/etc/logrotate.d/
そして、ログが一定の時間にローテーションすることを期待しました。ただし、そうではありません...ログのローテーション時間は、ランダムに見えるようです+/- 1時間。
ログローテーションの開始時刻がランダムになるのはなぜですか?これを変更するにはどうすればよいですか?
/opt/backups/network/*.conf {
copytruncate
rotate 30
daily
create 644 root root
dateext
maxage 30
missingok
notifempty
compress
delaycompress
postrotate
## Create symbolic links in daily/
PATH=`/usr/bin/dirname $1`;
FILE=`/bin/basename $1`;
/bin/ln -s $1 $PATH/daily/$FILE
endscript
}
重要なのは、CentOSがanacron
...から/etc/cron.{daily,weekly,monthly}でスクリプトを実行することを知っていることです。/etc/anacrontab
はRANDOM_DELAY
を設定します。予想(ジョブを開始する前に最大RANDOM_DELAY
分遅れます)...
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
Shell=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
#period in days delay in minutes job-identifier command
1 5 cron.daily Nice run-parts /etc/cron.daily
7 25 cron.weekly Nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly Nice run-parts /etc/cron.monthly
RANDOM_DELAY=0
/START_HOURS_RANGE=3
を設定すると問題が解決しました...
[〜#〜]編集[〜#〜]
さらに考えた後、anacron
を削除して通常のvixie cron
...をインストールします。
答えではありませんが、最近私は別の理由でこれを理解しようとしており、Redhat 6、Centosなどがcronを実行する方法に関するドキュメントを見つけることができませんでした。これが私がリバースエンジニアリングしたものです:
crond
は引き続きシステムの起動時に実行されます-/etc/cron.d
内のすべてのファイルをロードします/etc/cron.d/0hourly
は/etc/cron.hourly
内のすべてのファイルを実行します/etc/cron.hourly/0anacron
はanacron
を実行します/etc/anacrontab
をロードします/etc/anacrontab
が実行されます(run-parts
経由)/etc/cron.daily
、/etc/cron.weekly
および/etc/cron.monthly
そのため、以前のバージョンよりも複雑です。
毎時、毎週、毎月のエントリを/etc/crontab
(現在は空)に追加することにより、以前の動作を復元することは可能ですが、anacrontab
も更新する必要があります。これは将来のアップデートを壊すかもしれないししないかもしれません...
他の回答はhowをカバーしていますが、必ずしもwhyではありません。 理由は、毎晩のcronジョブが同時にインフラストラクチャを強制終了しないようにするためです。 (共有ストレージ、または1つのVMホストで実行されている1000台のサーバー、またはネットワークサービスにヒットする夜間ジョブを想像してください。)
特定のログローテーションジョブをcron.daily
からcron.d
にハードコードされた時間を含むエントリに移動することにより、特定のログローテーションに関するこの問題を常に解決します。このようにすると、updatedbのようなサービスの実行時間は実際には重要ではありませんが、ログローテーションの時間は一貫しています。
もちろん、特定のサイズに達したら、すべてのログをホストからログサーバーに送信し、個々のノード上のファイルのローテーション時間はそれほど重要ではありません。利便性(通常はファイルの末尾に続く)または最後の手段としてのフォールバックとして。次に、間違いなくログサーバーのローテーションを体系的に設定します。