異なるタイムゾーンのCrontabとDSTが一致しません。

異なるタイムゾーンのCrontabとDSTが一致しません。

ポーランド(UTC +01:00)でホストされているサーバーでニューヨーク時間午前9時(UTC -05:00)に常にcrontabエントリを実行する方法はありますか?

私にとって、これはマイナーな問題ではありません。これは、ポーランドの夏時間が最後の日曜日に終わったからです。だから私は一年中現地時間で15:00に米国証券取引所で作業を実行する予定です。

私は数年前、議会が夏時間を延長することを決めたことを覚えています。これにより、毎年数週間は同期されません。

うまくいくかどうかわからない解決策(どうせ避けたい)は、作業があるときです。

0 14 * * * something

私はニューヨークで時間を取得し、bash操作を使用して実行する必要があるかどうかをTZ=":US/Eastern" date +%s比較します。sleep 3600something

答え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環境を変更すると、dateUbuntuで正確な現在時刻が呼び出されるように見えるので、これは少なくとも回避策です(私は依存しないようにしています)。

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秒)スリープモードに切り替えました。

関連情報