ポーランド(UTC +01:00)でホストされているサーバーでニューヨーク時間午前9時(UTC -05:00)に常にcrontabエントリを実行する方法はありますか?
私にとって、これはマイナーな問題ではありません。これは、ポーランドの夏時間が最後の日曜日に終わったからです。だから私は一年中現地時間で15:00に米国証券取引所で作業を実行する予定です。
私は数年前、議会が夏時間を延長することを決めたことを覚えています。これにより、毎年数週間は同期されません。
うまくいくかどうかわからない解決策(どうせ避けたい)は、作業があるときです。
0 14 * * * something
私はニューヨークで時間を取得し、bash操作を使用して実行する必要があるかどうかをTZ=":US/Eastern" date +%s
比較します。sleep 3600
something
答え1
1つの操作しか実行しない場合は、次のようにkrugerを使用できます。
# MM HH DM MN DW CMD
0 * * * * TZ=':America/New_York'; if [ `date +\%H` -eq 9 ]; then actual-command-here; fi
すべてをシェルスクリプトに入れるかsh -c
...
私は隔週で実行する必要があるクローンタスクがあり、そのためにklugeのようなものを使用します。
答え2
まあ、TZ環境を変更すると、date
Ubuntuで正確な現在時刻が呼び出されるように見えるので、これは少なくとも回避策です(私は依存しないようにしています)。
SHELL=/bin/bash
0 14 * * 1-5 [ $[10#$(date +\%H) - 10#$(TZ=":US/Eastern" date +\%H)] == 5 ] || sleep 3600; w;df
w;df
したがって、プログラムは月曜日から金曜日まで午前9時(東部標準時)に実行されることを目指しています。追加のコマンドを実行する前に、15時間を14時間に変更して、1時間(3600秒)スリープモードに切り替えました。