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

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

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

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

2년 동안 예상대로 실행된 후 6월 18일에 두 번 실행되었으며 첫 번째 호출 후 0.5~1초 후에 두 번째 호출이 발생했습니다. 이런 일이 발생하는 원인은 무엇입니까?

처음이나 두 번째로 인간이 운영하지 않았습니다.

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

시계를 동시에 동기화하여 강제로 1초 뒤로 돌아가 오전 1시에 크론을 다시 실행하도록 할 수 있습니까?

답변1

어쩌면 jippie가 마침내 뭔가를 발견했을 수도 있습니다. 비록 윤초가 실제로 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년마다) 윤초는아니요. 윤초를 도입해야 한다고 결정한 똑똑한 사람들로 구성된 위원회(내 생각에는 유엔에 있는 것 같습니다)가 있었습니다. 이는 약 60일 전에만 예측할 수 있습니다. 많은 시스템은...:59부터...:60까지...:00에 도달하기 전의 시간을 좋아하지 않습니다. 데이터베이스는 1초 뒤로 설정되는 시간을 좋아하지 않으며 한 번만 발생하는 타임스탬프에 대해 매우 까다롭습니다.

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

답변3

나는 또한 cron을 두 번 실행했습니다. 두 개의 동기화 스크립트는 오류 메시지를 읽고 삭제합니다. 누군가 새로운 것을 발견했는지 확인하려면 이 스레드로 계속 돌아오세요!

하지만 방금 이것이 cron의 이중 입력이라는 것을 깨달았습니다. /etc/cron.quarter의 모든 스크립트를 실행하는 /etc/crontab의 항목과 동일한 스크립트를 호출하는 /etc/cron.d의 항목이 있습니다.

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

관련 정보