3

私のシステムには多くの時間のずれがあり、数週間後には約 5 分進むことがあります。

これを修正するために、ntp をインストールしました。これは、ドリフトを修正し、もちろん、時々 ntp サーバーに時刻を同期するのに役立ちます。

ファイルのバックアップなどの cron ジョブがあるとします。次のシナリオは可能ですか?

02:00:00 - Cron starts a job
02:00:03 - Ntpd syncs time back 5 seconds to 01:59:58
02:00:00 - 2:00 gets repeated and cron job runs twice

cron ジョブが大きなファイルをコピーする場合、2 回目の実行では、最初のジョブが書き込みを完了していないファイルを上書きしようとする可能性があります。

ありがとう!

4

3 に答える 3

3

マニュアルページの内容は次のcron(8)とおりです(これはVixie cron用です。他の実装では、動作が異なる場合があります)。

夏時間の開始時と終了時など、時計の変更が3時間未満の場合は、特別な考慮事項があります。時間が進んだ場合、スキップされた時間に実行されたはずのジョブは、変更後すぐに実行されます。逆に、時間が3時間未満遅れている場合、繰り返し時間に該当するジョブは再実行されません。

特定の時間に実行されるジョブ(@hourlyとして指定されていない、または時間または分の指定子に「*」が含まれていない)のみが影響を受けます。ワイルドカードで指定されたジョブは、新しい時刻に基づいてすぐに実行されます。

3時間以上の時計の変更は、時計の修正と見なされ、新しい時刻がすぐに使用されます。

于 2011-12-30T20:37:06.183 に答える
1

この特定のシナリオでは可能性がありますが、バックアップ ジョブにロック メカニズムを配置して、一度しか実行できないようにすることをお勧めします。

Perl では、次のことができます。

flock("/tmp/backup-running", LOCK_EX) || die "I'm already running";

シェルは、次を実行しない限り、同様のメカニズムを提供しない場合があります。

touch /tmp/backup-running
if [ -f "/tmp/backup-running" ]
then
    exit 0;
fi

....


/bin/rm /tmp/backup-running

これは、他の言語が PERL と同様の機能を提供するという問題を引き起こしがちです。

于 2011-12-30T18:12:33.893 に答える
0

ntp.conf を使用すると、ntp がタイム サーバーに接続して修正を行う頻度を制御できます。デフォルト (minpoll) の最小値は 64 秒で、maxpoll のデフォルト値は 1024 秒です。man ntp.conf を参照してください

したがって、物事に影響を与えない時間に手動で時刻を修正してから ntp を開始すると、ドリフトの量は小さくなり、1 秒未満の変化が非常に大きくなります。

私たちの m4000 の 1 つにそのような時計があり、問題が発生したことはありません。

注: ロック ファイルの唯一の問題は、バックアップが異常終了した場合、ロック ファイルがリセットされるまでバックアップが実行されないことです。

于 2011-12-30T20:07:30.347 に答える