cron의 시간대 문제 구성은 다음과 같습니다. 서버 시간

cron 작업은 서버 시간과 비교하여 1 시간 후에 계산됩니다. 나는 무슨 일이 일어나고 있는지 이해하지 못합니다.

내 구성은 다음과 같습니다.

서버 시간 :

Europe/Paris

/ etc / default / cron에서 다음 줄을 추가했습니다.

TZ="Europe/Paris"

그럼에도 불구하고 크론 작업은 서버 시간보다 1 시간 늦게 시작됩니다. 정말 까다로운 것은 cron에게 “date”명령을 실행하도록 요청하면 서버 날짜를 제공한다는 것입니다 (좋은 것!).

이 문제를 해결하는 방법을 모르겠습니다. 포럼에서 약간의 독서를했지만 흥미로운 것은 없습니다.

어떻게 생각해 ?



답변

(솔루션으로 판명되었으므로 내 의견을 답변으로 복사합니다. 올바로 추측했습니다.)

따라서 cron 작업은 UTC로 스케줄됩니다 (UTC Europe/Paris에서 1 시간 오프셋).

Vixie cron 매뉴얼 페이지는 말합니다 :

데몬은 존재하는 경우 시간대에 대해 / etc / timezone의 정의를 사용합니다.

무엇입니까 /etc/timezone? /etc/timezonecron 프로세스가 시작된 것보다 최근에 수정 했습니까 ? 당신은 시도 했습니까

/etc/init.d/cron restart

?


답변

Fedora와 같은 일부 배포판 CRON_TZ=은 기본 시간대를 재정의하도록 설정할 수있는 메커니즘을 제공 합니다.

페도라에서 man 5 crontab

CRON_TZ 변수는 cron 테이블에 특정한 시간대를 지정합니다. 사용자는 지정된 시간대에 따라 시간을 표에 입력해야합니다. 로그 파일에 쓰는 데 사용 된 시간은 데몬이 실행중인 로컬 시간대에서 가져옵니다.

이 같은:

#m  h           d   m   wday    command
CRON_TZ="Europe/Paris"
5   0,6,12,18   *   *   *       /path/to/script.bash

답변

위키 백과는 말합니다

대부분의 cron 구현은 단순히 cron 데몬 자체가 실행되는 시스템 시간대 설정에서 crontab 항목을 해석합니다. 대규모 다중 사용자 시스템에 여러 시간대의 사용자가있는 경우, 특히 시스템 기본 시간대에 혼동 될 수있는 DST가 포함 된 경우 이는 분쟁의 원인이 될 수 있습니다. 따라서, cron 구현은 사용자 crontab에서 “TZ =”환경 변수 설정 라인을 특수한 경우, 해당 시간대와 관련된 후속 crontab 항목을 해석합니다.

로그인 ID에 시스템 TZ 설정과 다른 TZ 설정이 있습니까?


답변

cron을 다시 시작하는 것이 내가 필요했지만 명령은

/etc/init.d/crond restart (crond not cron)

답변

우분투 14/16에서 이것을 알아 냈습니다. 나를 위해 완벽하게 일했습니다.

단계 (Sudo 암시) :

  1. cat /etc/timezone
  2. rm -fv /etc/localtime
  3. ln -s /usr/share/zoneinfo/Asia/Kolkata /etc/localtime
  4. apt install -y --reinstall tzdata
  5. /etc/init.d/rsyslog restart
  6. tail -f /var/log/syslog
  7. cat /etc/timezone