cronジョブは、システム時間と完全に一致しないため、1時間オフで実行されます


9

問題の例:

* 9 * * * echo 9
* 10 * * * echo 10

上記は毎分ユーザーにメールを送信しますが、「9」の応答はすべて10:00 AM-> 10:59 AMに発生し、「10」は11:00 AM-> 11:59 AMに受信されます。 。

のジョブを実行する

* * * * * /bin/date ; /bin/date -u

予想される(正しい)日付と時刻を返しました。これはUTCと現地時間(アメリカ/デンバー)の両方に当てはまりました。特定の時間に毎分実行するようにこのジョブを変更すると、オフセットが発生します(9で実行するように指示されたジョブなど)。

私が完了した現在のデバッグ:

さて、それは奇妙です。たぶん、私のタイムゾーンファイルがどういうわけか台無しにされていますか?それを確認しましょう

diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`
Files /etc/localtime and /usr/share/zoneinfo/America/Denver are identical

ハードウェアクロックをチェックして、これがオフになっていないか、ローカル設定(ルートとして実行)と何らかの形で一致していないかどうかを確認しました。

date ; hwclock
Wed Oct 26 10:50:13 MDT 2016
Wed 26 Oct 2016 10:50:14 AM MDT  -0.204171 seconds

1秒ずれているように見えますが、それで私のcronジョブが1時間オフのスケジュールで実行されないはずです。

私は次のことも確信しています:

  • 私のタイムゾーンは最近変更されましたか?番号
  • とにかく手動でタイムゾーンを修正してみましたか?はい
  • タイムゾーンを修正した後、cronをリセットしましたか?はい
  • cronサービスが再起動されたことを確認しましたか?はい
  • cronサービスを再起動しましたか?はい
  • 本当にcronが再起動されましたか?Cronが再起動されたことを100%確実に

その他の関連する可能性のある情報:

Debianを実行しています。

cat /etc/debian_version
8.6

現在のカーネル

uname -a
Linux BigBox 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux

更新されたデバッグ:

「hwclock --systohc」を実行しましたが、動作に目立った変更はありません。このコマンドを実行して確認しました

date;hwclock
Wed Oct 26 12:39:09 MDT 2016
Wed 26 Oct 2016 12:39:11 PM MDT  -0.875328 seconds

このファイルが存在しないため、「cat / etc / sysconfig / clock」を実行できません。/ etc /ツリーの下でfindコマンドを実行して 'clock'を見つけると、その名前のファイルがないことを確認できます。

私が知っている何かがCRON_TZ変数を設定しているかどうかを確認しました。ユーザーレベルでもルートレベルでも設定されません。cronにそれらをエコーアウトさせると、何も出力されません。


1
されCRON_TZたenv varがどこにも設定されていますか?
2016年

試すhwclock --systohcだけの完全を期すため、および追加cat /etc/sysconfig/clockの質問に?
2016年

私の情報に両方の提案を追加しましたが、残念ながらどちらもあまり価値がありませんでした。CRON_TZは、私が見ることができるどの環境でも設定されていません。hwclockを再同期すると、以前と同じ結果が得られ(変更されたかどうかを確認するために確認しました)、「/ etc / sysconfig / clock」がありません。 'ファイル。
jmurrayufo 2016年

回答:


1

もう1つ見るべき場所は、の起動時スクリプトcron、または古い学校のシステムのcrontabファイルです/etc/crontab。それはたとえば、TZ環境変数がに設定されますいる可能性があります、/etc/init.d/cronieまたは/lib/systemd/system/crond.service私はDebianが初期化システムに使用するかわからないんだけど、。

1 crond時間おきに実行しようとしたときに、次のようなことがわかりました。

0 */2 * * * /opt/dbms/rainstor/archiving/ama_term

crondスクリプトを奇数時間に実行しました。私は疑いましたが、それが夏時間の混乱と関係があるのではないかと自分には証明できませんでした。


/etc/init.d/cronが/etc/timezoneファイルを取得しています。TZ = cat /etc/timezone。そのファイルは正しいようです(チェックサムを実行して、本来あるべきものと同じであることを確認してください)。/lib/systemd/system/crond.serviceはTZ変数を変更したくないようです。* / 2の提案をチェックして、同じものがあるかどうかを確認します。
jmurrayufo 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.