crond가 일광 절약 시간제 +1시간 변경을 처리할 수 있습니까?

crond가 일광 절약 시간제 +1시간 변경을 처리할 수 있습니까?

지난 주말에는 시간을 02:00에서 03:00으로 변경해야 했습니다.

질문:02:30에 cronjob이 있으면 어떻게 되나요?

crond는 아마도 이를 처리해야 하지만 방법을 모르는 아주 오래된 스케줄링 솔루션입니다.

답변1

이는 cron 구현에 따라 다를 수 있지만 인기 있는 Vixie cron은 매뉴얼에 다음과 같이 명시되어 있습니다.

그런 다음 cron은 매분마다 깨어나서 저장된 모든 crontab을 확인하고 각 명령을 확인하여 현재 분에 실행되어야 하는지 확인합니다.

그리고

일광 절약 시간이 시작되거나 끝나는 경우와 같이 시계가 3시간 미만으로 변경되는 경우에는 특별한 주의가 필요합니다. 시간을 앞당기면 건너뛴 시간 동안 실행된 작업은 변경 후 곧 실행됩니다. 반대로, 시간이 3시간 미만으로 이동하면 중복된 시간에 해당하는 작업은 다시 실행되지 않습니다.

특정 시간(@hourly로 지정되지 않거나 시간 또는 분 지정자에 "*"를 사용하지 않음)에 실행되는 작업만 영향을 받습니다. 와일드카드를 사용하여 지정된 작업은 새 시간을 기준으로 즉시 실행됩니다.

DST가 3시간 이내에 변경되었으므로 프로그램은 오전 3시 직후에 실행됩니다.

이것이 Vixie cron의 특정 동작인지는 확실하지 않습니다. 80년대에 PDP-11이 이런 방식으로 작동했던 것으로 기억하는 것 같지만 확실하지 않습니다.

답변2

가장 좋은 해결책은 하드웨어 시계를 UTC(협정 세계시)로 설정하여 컴퓨터를 실행하는 것입니다.GMT 또는 Zulu 시간이라고도 함그리고 일광 절약 시간이 적용될 수 있도록 현지 시간대를 설정하여 시간 표시 방식을 변경하기만 하면 됩니다.

SUSE Linux 및 아마도 대부분의 다른 Linux에서 하드웨어 시계가시스템->환경->시계->HWCLOCK-u 플래그를 사용하여 UTC로 설정한 다음 시간대를 해당 위치로 설정하면 시스템이 자동으로 DST 수정을 통해 현지 시간을 표시합니다.

여기에는 많은 장점이 있습니다.

  • 더 이상 DST 변경에 따라 시계를 수동으로 조정할 필요가 없습니다.
  • CRON 탭은 UTC 시간으로 저장하고 실행됩니다.
  • 하나의 파일(예: 로그)이 DST 종료 전 01:30에 기록되고 다른 파일이 DST 종료 후 01:20에 기록된 경우 해당 파일은 여전히 ​​다른 파일보다 "최신"입니다. 파일 타임스탬프는 UTC이며 표시 당시의 현재 시간대를 기준으로 표시되도록 간단히 변환됩니다.

자세히 알아보려면 man hwclock터미널에 입력하세요.

관련 정보