cronjobは、システム時間や独自の時間経過によって異なりますか?システム時間の場合、システム時間を手動で変更すると、cronjobはそれに応じて新しく設定された時間に準拠しますか?
答え1
たとえば、時計を12時4分から12時6分に移動し、ジョブが12時5分にスケジュールされている場合、そのジョブはいいえランニング。
毎日12時5分にジョブを実行する必要がある場合または次に、できるだけ早く(電源投入後またはシステムクロックの後)、毎分(または許可されている場合はより長い間隔で)ジョブを実行し、スクリプトがステータスファイルに基づいて一日の最後の実行であることを確認します。ステータスファイルが存在し、最新の場合、スクリプトはすぐに終了する必要があります(つまり、12:05以降の最速の機会に実行されます)。そうでない場合は、ステータスファイルを設定し、残りのスクリプトを実行して、次の日の12:5分に時計が到達するまで追加の呼び出しが何も実行されないようにします。
特に作業に時間がかかる場合は、まずステータスファイルを更新してから実行を続けることが重要です。そうしないと、12:06 確認で更新された状態が見つからず、他のジョブの並列実行が開始されます。
答え2
cron
システム時計を使用して毎分確認してください。システムクロックを変更するには、man
ページで次の抜粋が役に立ちます。
夏時間が始まったり終わったりするなど、時計が3時間未満に変更される場合は、特別な注意が必要です。時間が経過すると、スキップされた時間に実行されたジョブは変更後すぐに実行されます。逆に、時間が3時間未満に移動すると、重複した時間に対応するジョブは再実行されません。