
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
매개변수로 사용하여 더 지연할 수 있습니다. 이 경우 shutdown
over를 사용하면 reboot
지연 시간 동안 로그인이 거부되고(루트 제외) 사용자에게 재부팅이 임박했다는 경고가 표시된다는 이점이 있습니다.
답변2
이 문제는 클릭이 동기화되지 않아 발생합니다.
다음을 사용하여 다시 시작하기 전에 cron을 실행하여 문제를 해결했습니다.
/sbin/hwclock --systohc >/dev/null 2>&1
비교하다
/usr/sbin/shutdown -r +5 >/dev/null 2>&1
일하다.
시계를 동기화하라는 명령에 대한 언급이 없으면 문제가 남아 있습니다.