私のcronジョブは、サーバー時間と比較して1時間後に計算されます。何が起こっているのかわかりません。
私の設定は次のとおりです:
サーバー時間 :
Europe/Paris
/ etc/default/cronに次の行を追加しました:
TZ="Europe/Paris"
それにもかかわらず、cronジョブはサーバー時間より1時間遅れて起動されます。本当にトリッキーなのは、cronに「date」という命令を実行するように依頼すると、サーバーの日付が表示されることです(良い日付です!)。
この問題を解決する方法はわかりません。私はフォーラムでいくつかの読書をしてきましたが、興味深いものは何も見つかりませんでした。
どう思いますか ?
(解決策であることが判明したので、私のコメントを回答としてコピーしました。私は正しいと思いました。)
したがって、cronジョブはUTCでスケジュールされています(Europe/Paris
はUTCから1時間オフセットされています)。
Vixie cronのmanページにはこう書かれています:
デーモンは、存在する場合、タイムゾーンの/ etc/timezoneからの定義を使用します。
/etc/timezone
には何がありますか? cronプロセスが開始されてから/etc/timezone
を最近変更しましたか?やってみました
/etc/init.d/cron restart
?
Fedoraなどの一部のディストリビューションでは、CRON_TZ=
を設定してデフォルトのタイムゾーンを上書きできるメカニズムを提供しています。
Fedoraからman 5 crontab
CRON_TZ変数は、cronテーブルに固有のタイムゾーンを指定します。ユーザーは、指定されたタイムゾーンに従って時間をテーブルに入力する必要があります。ログファイルへの書き込みに使用される時間は、デーモンが実行されているローカルタイムゾーンから取得されます。
このようなもの:
#m h d m wday command
CRON_TZ="Europe/Paris"
5 0,6,12,18 * * * /path/to/script.bash
Cronの再起動が必要でしたが、私にとってはコマンドは
/etc/init.d/crond restart (crond not cron)
ウィキペディアは言う
ほとんどのcron実装は、cronデーモン自体が実行されているシステムのタイムゾーン設定のcrontabエントリを単に解釈します。大規模なマルチユーザーマシンに複数のタイムゾーンのユーザーがいる場合、特にシステムのデフォルトのタイムゾーンに混乱を招く可能性のあるDSTが含まれている場合、これは論争の原因となる可能性があります。したがって、cron実装は、ユーザーのcrontab内の「TZ =」環境変数設定行を特殊なケースにして、そのタイムゾーンに関連する後続のcrontabエントリを解釈する場合があります。
それで、おそらくあなたのログインIDには、システムのTZ設定とは異なるTZ設定がありますか?
Ubuntu 14/16でこれを理解しました。私には完璧に働きました。
手順(Sudoを含む):
cat /etc/timezone
rm -fv /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Kolkata /etc/localtime
apt install -y --reinstall tzdata
/etc/init.d/rsyslog restart
tail -f /var/log/syslog
cat /etc/timezone