현지 시간이 아닌 GMT에서 cron 작업을 실행하는 방법은 무엇입니까?


8

현지 시간이 아닌 GMT에서 cron 작업을 실행하려면 어떻게해야합니까?

이것은 내 crontab 파일입니다.

#m  h           d   m   wday    command
TZ=GMT
5   0,6,12,18   *   *   *   ~/Documents/bash/transfer.sh

내 작업은 현지 시간 (GMT + 11)에 실행되는 것 같습니다. os x snow leopard를 실행 중이지만 개발이 완료되면 코드가 Linux로 이동합니다.

Linux 환경은 구성을 덜 제어 할 수있는 공유 환경 일 수 있습니다.



답변:


8

모든 버전의 버전이 cron시스템 이외의 시간대를 사용하여 작업을 실행하는 것은 아닙니다 .

그렇다면 사양이 꺾쇠 괄호없이 TZ=GMT또는 이어야합니다 TZ=UTC. 경우에 따라 변수는입니다 CRON_TZ.

가장 좋은 방법은 특정 시스템과 관련된 설명서를 확인하는 것입니다. 참조하십시오 man 5 crontab.


3

현지 시간이 Europe/London입니다. 그때:

crontab -e    # or 'cru' on some machines
>>>
# Run COMMAND at 03:15am UTC every morning
15 3 * * * [ "$(date +\%z)" = "+0000" ] && COMMAND
15 4 * * * [ "$(date +\%z)" = "+0100" ] && COMMAND
<<<

또 다른 예:

정규 시간이 +0500이동 UTC하고 계절 시간이 +0600이동 인 경우 UTC. 그런 다음 +5위 예제에 지정된 모든 시간에 추가하십시오 . 이 수단에서 실행되는 08:15am09:15am각각 현지 시간. 따라서 수정 된 cron 줄은 다음과 같습니다.

crontab -e    # or 'cru' on some machines
>>>
# Run COMMAND at 03:15am UTC every morning
15 8 * * * [ "$(date +\%z)" = "+0500" ] && COMMAND
15 9 * * * [ "$(date +\%z)" = "+0600" ] && COMMAND
<<<

[편집] crontab 파일에서 \퍼센트 %문자 를 이스케이프 처리 하십시오. crontab은 그것들을 개행 구분자로 해석합니다. 예 : %-> \%.


1
DST를 사용하는 시간대에있는 경우 문제가있을 수 있습니다 (예를 들어) 시간대는 때때로 +01 : 00이고 일부는 +02 : 00
inemanja

2
아마도 당신은 정교한 수 있습니까? 나는 그렇게 생각하지 않습니다. 우리는 이미 DST를 설명합니다. 각 케이스에는 자체 cron 라인이 있습니다. DST가 있거나없는 각각에 대해 1입니다.
Dreamcat4

개별 명령으로 다른 행동을 할 수 있기 때문에 이것은 정답입니다.
Patrick McCann

0

아마도 원래 크론 바이너리를 랩핑 할 수 있습니다.

mv /usr/sbin/crond /usr/sbin/crond.real
cat > /usr/sbin/crond
#!/bin/sh
TZ=GMT
export TZ
exec crond.real ${1+"$@"}

안녕하십니까,이 단계들을 설명해 주시겠습니까?
컴파운드 눈

crond.real에 crond를 복사 한 다음 crond를 짧은 스크립트로 바꾸고 TZ를 설정하고 내보내고 crond.real을 실행합니까?
컴파운드 눈

복사하지 않고 움직이지만 나머지 분석은 정확합니다.
hlovdal
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.