Centos 7.8에서 서버를 다시 시작하는 데 사용되는 crontab이 재부팅 루프를 한 번 생성하는 이유는 무엇입니까?

Centos 7.8에서 서버를 다시 시작하는 데 사용되는 crontab이 재부팅 루프를 한 번 생성하는 이유는 무엇입니까?

CronJob을 실행하고 한 달에 한두 번 서버를 다시 시작하고 싶습니다. 나는 다음을 원한다:

crontab -e

비교하다:

51 9 5 * * /usr/sbin/reboot

매월 5일 9시 51분에 다시 시작해야 하며 서버를 다시 시작할 수 있지만 30초 후에 다시 시작하면 계속해서 무한 루프가 생성됩니다.

왜 이런 일이 발생하며 어떻게 해결합니까? 이 동작을 중지해야 하는 유일한 방법은 CronJob을 삭제하는 것입니다. 따라서 한 달에 한 번 자동으로 다시 시작하도록 설정할 수 없습니다.

어떤 도움이라도 대단히 감사하겠습니다.

업데이트 1: 크론 시간이 너무 짧아서 문제가 발생하는 것이 아닙니다. +5분을 추가하거나 재시작을 지연하더라도 루프가 계속 발생합니다.

답변1

나는 이것이 너무 빠른 재시작 때문이라고 가정합니다. 즉, cron 데몬이 다시 시작될 때 시간은 여전히 ​​9시 51분이므로 작업이 트리거됩니다.

이 문제를 해결하는 한 가지 방법은 실제 다시 시작을 지연하는 것입니다 sleep.

51 9 5 * * sleep 60 && /usr/sbin/reboot

또는 shutdown다음을 사용하여 연기하려면:

51 9 5 * * /usr/sbin/shutdown -r

shutdown기본적으로 작업을 1분씩 지연하지만 이를 +5매개변수로 사용하여 더 지연할 수 있습니다. 이 경우 shutdownover를 사용하면 reboot지연 시간 동안 로그인이 거부되고(루트 제외) 사용자에게 재부팅이 임박했다는 경고가 표시된다는 이점이 있습니다.

답변2

이 문제는 클릭이 동기화되지 않아 발생합니다.

다음을 사용하여 다시 시작하기 전에 cron을 실행하여 문제를 해결했습니다.

/sbin/hwclock --systohc >/dev/null 2>&1

비교하다

/usr/sbin/shutdown -r +5 >/dev/null 2>&1

일하다.

시계를 동기화하라는 명령에 대한 언급이 없으면 문제가 남아 있습니다.

관련 정보