実行中
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に従って実行されています。目的の動作を実現するために必要な変更をどこで行う必要がありますか?
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--
私の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
ローカルタイムゾーンに変更する前に、システムをUTCに構成しました。
システムのタイムゾーンを変更した後、cronを再起動する必要があることがわかりました。
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