크론이 동시에 두 번 실행되는 원인은 무엇입니까?

크론이 동시에 두 번 실행되는 원인은 무엇입니까?

매주 월요일 오전 1시에 실행되도록 설정된 크론이 있습니다.

0 1 * * 1 /script/dir/script >> /script/dir/file.log

예상대로 2년 동안 실행된 후 6월 18일에 두 번 실행되었으며 두 번째 호출은 첫 번째 호출 이후 ½ - 1초 후에 발생했습니다. 무엇이 그런 일이 일어날 수 있습니까?

인간이 처음이나 두 번째로 실행한 것이 아닙니다.

스크립트가 웹사이트와 연결되어 있지만 문서 루트 외부에 있습니다.

시계가 동시에 동기화되어 1초 뒤로 강제 이동되고 오전 1시에 크론이 다시 실행될 수 있습니까?

답변1

결국 뭔가 문제가 생겼을 수도 있습니다. 윤초가 실제로 7월 1일에 삽입되었지만 현재는일부 GPS 시간 시스템의 버그(전체 스레드를 읽어주세요) 이로 인해 윤초가 계속해서 발표됩니다. 즉, 윤초 플래그는 6월 30일부터 매일 여러 상위 타임 소스로부터 발표되고 있습니다. 우리가 말하는 동안 문제가 해결되고 있습니다. NTP 질문 메일 스레드를 다시 참조하세요. 이로 인해 7월 31일/8월 1일에 수많은 시스템이 공격을 받았습니다.처럼6월 30일(Linux 커널 충돌) / 7월 1일(Java CPU 문제).

이상한 점은 6월 18일에 발생했다는 것이다. 같은 시기에 커널 로그에 "윤초 삽입" 메시지가 있었나요? 귀하의 서버는 현재 UTC+1(BST)입니까? 커널 로그에 도약 메시지가 표시되면 어떤 ntpd 버전과 커널 버전을 실행하고 있습니까? 내가 접한 모든 ntpd 버전에서 도약은 매월 마지막 날에만 커널에 전파되므로 전체 윤초 이론은 여기에서 붉은 청어가 될 수 있습니다.

답변2

아래 내 대답은 다음과 같습니다.잘못된, 날짜를 혼동했습니다. 가장 최근의 윤초가 2012년 6월 30일 23:59:60 UTC에 삽입되었습니다. 6월 18일이 아닙니다.


이날 도입된 윤초.

윤초는 윤년만큼 예측하기 어렵습니다. 일반적으로 대규모 지진, 쓰나미 등으로 인해 발생합니다. 도약하는 곳년도합리적으로 예측 가능합니다(약 4년마다). 윤초는~ 아니다. 윤초를 도입해야 한다고 결정하는 똑똑한 두뇌를 가진 사람들로 구성된 위원회가 있습니다(저는 UN이라고 믿습니다). 이는 약 60일 전에만 예측할 수 있습니다. 많은 시스템은 ...:59에서 ...:60으로 이동하기 전에 ...:00으로 이동하는 시간을 좋아하지 않습니다. 데이터베이스는 시간이 1초 뒤로 설정되는 것을 좋아하지 않으며, 한 번만 발생하는 타임스탬프에 대해 매우 까다롭습니다.

https://en.wikipedia.org/wiki/Leap_second#Announcement_of_leap_seconds

답변3

나는 또한 이중 실행 크론을 얻었습니다. 오류 메시지를 읽고 삭제하는 두 개의 동시 스크립트. 누군가 새로운 것을 발견했는지 확인하기 위해 이 스레드로 계속 돌아왔습니다!

그러나 나는 그것이 cron의 이중 항목이라는 것을 깨달았습니다. /etc/cron.quarter의 모든 스크립트를 실행하기 위해 /etc/crontab에 항목이 있었고, /etc/cron.d에도 동일한 스크립트를 동시에 호출하는 항목이 있었습니다.

윤초 문제를 디버깅하는 것만큼 지적으로 엄격하지는 않습니다!

관련 정보