서로 다른 시간대의 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

하나의 작업만 수행하는 경우 다음과 같이 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우분투에서 정확한 현재 시간이 호출되는 것처럼 보이기 때문에 이것은 적어도 해결 방법입니다(나는 의존하지 않으려고 노력하고 있습니다).

SHELL=/bin/bash

0 14 * * 1-5  [ $[10#$(date +\%H) - 10#$(TZ=":US/Eastern" date +\%H)] == 5 ] || sleep 3600; w;df

w;df따라서 프로그램은 월요일부터 금요일까지 오전 9시(동부 표준시)에 실행되는 것을 목표로 합니다. 추가 명령을 실행하기 전에 1시간(3600초) 동안 절전 모드로 전환하도록 15시간을 14시간으로 변경했습니다.

관련 정보