web-dev-qa-db-ja.com

世界時ではなく現地時間に従ってCronjobsを実行する

実行中

dpkg-reconfigure tzdata

端末で、私は私のマシンで2つの異なる時間を取得します

Local time is now:      Wed May  1 11:58:55 IST 2013.
Universal Time is now:  Wed May  1 06:28:55 UTC 2013.

問題は、ISTにある現地時間に従ってcronjobsを実行したいのですが、それらは世界時UTCに従って実行されています。目的の動作を実現するために必要な変更をどこで行う必要がありますか?

8
Jigar

Cronは現地時間で実行されますが、一部のシステムではTZ =行を使用して、異なるタイムゾーンで特定の行を実行できます。他のシステムはこれをサポートしていません。 TZ=UTCまたはTZ=GMT行がある場合は、コメント化してください。そうでない場合は、最初のエントリの前に、TZ=ISTを単独で追加してください。システムでサポートされている場合、man crontabを使用してTZ =行を文書化する必要があります。タイムゾーンを指定する場合は、夏時間の問題に注意してください。

Cronが本当にUTCで実行されている場合、システムがUTCで実行されている、またはTZ環境変数がUTCに設定された状態でcronが開始されたなど、いくつかの可能性があります。タイプ

date

システムが保持している時間を確認します。シェルでTZ変数が設定されていないことを確認してください(printenv TZで確認してください。何も返さないはずです)。

行う

ps auxwwe | grep cron | grep TZ

tZセットを使用してcronの開始をテストします。何も返さない場合は、起動時にTZが設定されていません。これが設定されている場合は、cronを開始したスクリプトから始めて、TZがどこに設定されているかを確認するために、ブートプロセスをたどる必要があります。

Cronとタイムゾーンについては、こちらをご覧ください。

https://askubuntu.com/questions/54364/how-do-you-set-the-timezone-for-crontab

--jh--

8
Joe

私のAmazon EC2 Linuxインスタンスでは、TZ変数を設定しても、cronによって起動された後に使用されたタイムゾーンプログラムは変更されましたが、cronが起動した時間は変更されませんでした-UTC時間に従って起動されたままです。

Cronがローカル時間に従ってプログラムを起動するようにするには、/etc/localtimeを自分のタイムゾーンの適切なtzfileへのシンボリックリンクにしてから、cronサービスを再起動します。

mv /etc/localtime /etc/localtime.bak
ln -s /usr/share/zoneinfo/America/Chicago /etc/localtime
service crond restart

詳細はこちら: https://www.freedesktop.org/software/systemd/man/localtime.html

4
Russell G

ローカルタイムゾーンに変更する前に、システムをUTCに構成しました。

システムのタイムゾーンを変更した後、cronを再起動する必要があることがわかりました。

1
hultqvist

Ubuntu 14/16でこれを理解しました。私には完璧に働きました。

手順(Sudoを含む):

  1. cat /etc/timezone
  2. rm -fv /etc/localtime
  3. ln -s /usr/share/zoneinfo/Asia/Kolkata /etc/localtime
  4. apt install -y --reinstall tzdata
  5. /etc/init.d/rsyslog restart
  6. tail -f /var/log/syslog
  7. cat /etc/timezone
1
Varun Chandak