시계가 고장난 경우에도 30일마다 Linux를 재부팅하는 방법

시계가 고장난 경우에도 30일마다 Linux를 재부팅하는 방법

저는 일부 하드웨어**를 제어하기 위해 헤드리스, 네트워크리스 Raspberry Pi Zero를 실행하고 있는데 때로는 시간/날짜가 손상되거나 다른 것들이 손상될 수도 있습니다. 완벽한 솔루션은 아니지만 시스템을 자동으로 다시 시작하면 현 상태보다 개선될 수 있습니다. 일반적으로 cron이 여기서는 확실한 선택이지만 cron은 손상된 날짜에 강력하지 않다고 확신합니다. 제가 말하는 "손상"이란 무작위로 4년 반 전으로 거슬러 올라간다는 것입니다. 제가 추가한 RTC 칩에 결함이 있는 것 같습니다.

그렇다면 간헐적인 시계 오류에 대해 상대적으로 안정적이려면 어떻게 해야 할까요? 이상적으로는 컴퓨터를 30일마다 다시 시작해야 합니다. 시계에 결함이 있으면 분명히 이 목표가 더 어려워지지만 매주 재부팅하지 않거나 전혀 재부팅하지 않는 한 정확성은 그다지 중요하지 않습니다.

cron 스크립트에 !를 추가하여 나만의 솔루션을 출시할 수 있습니다. 매일 밤 자정에 어딘가에 파일을 쓴 다음 wc가 30자를 초과하거나 그와 비슷한 내용을 보고하면 다시 시작하지만 표준 솔루션이 있어야 할 것 같습니다.

** 극단적인 과잉 시나리오에서 90년대 중반 SGI O2와 동일할 수 있는 이 완전한 기능의 UNIX 컴퓨터는 외부 조명 수준에 따라 잠그거나 잠금 해제되는 "스마트" 고양이 문을 작동하고 있습니다.

답변1

큰 클럭 점프를 감지하는 방법은 무엇입니까?

Linux는 최소한 유지합니다.내부 시스템 시계 2개:

  • "실시간 시계"는 일반적으로 NTP 서버와 동기화됩니다.
  • "모노톤 시계"는 결코 뒤로 가지 않고 앞으로만 똑딱거린다

약 4년 전으로 돌아감매우실시간 시계를 재설정하면 발생할 수 있습니다. 단조로운 시계는 절대로 뒤로 점프해서는 안 됩니다. 그게 요점입니다.

따라서 시스템 시계와 비교하여 단조로운 시계를 모니터링하면 시스템 시계가 갑자기 오랜 기간 동안 뒤로 이동하는 것을 볼 수 있습니다(한 달 이상 뒤로 이동하는 시계는 거의 없음).

Python을 사용하는 경우 몇 초 만에 차이를 쉽게 확인할 수 있습니다.

python3 << EOF
import time
print(time.time() - time.monotonic())
EOF

이는 그 자체로는 의미가 없는 숫자(초)를 제공하지만 큰 변화가 있으면 시스템 시계 점프가 발생합니다. 변화가 있거나 더 나쁜 경우는 -259200030일 이상의 점프를 나타냅니다.

이와 같은 명령은 sleep이와 같은 시계 점프의 영향을 받아서는 안 되므로 정기적으로 실행할 수 있어야 합니다.

진짜 문제를 진단하라

나는 아주 깊은 토끼굴에 빠졌고 거의 똑같은 문제에 부딪혔습니다.

이번 달은 내 경력에서 다시는 돌아갈 수 없는 한 달이었습니다. 그래서 저는 강조하고 싶습니다.이 답변. 근본 원인을 해결하는 데 도움이 될 수 있습니다.

시스템 시계가 저절로 파괴될 가능성은 거의 없습니다.

시스템 시계는 하드웨어가 아닌 소프트웨어로 유지 관리됩니다. RTC(장치에 있는 경우)는 일반적으로 부팅 시 읽기만 하므로 재부팅 후 복원할 수 있습니다. 이상한 구성이 없으면 ntpdRTC를 안전하게 제외할 수 있습니다.

일반적으로 시스템 시계를 자발적으로 변경할 수 있는 유일한 것은 NTP 데몬 또는 SNTP 데몬입니다. NTP 데몬은 여러 서버를 확인하여 내결함성이 우수하므로 내 돈은 SNTP 데몬에 있습니다.

일부 가정용 라우터정말 더러운 짓을 하세요. NTP 또는 SNTP 서버 역할을 합니다. 그러나 라우터가 재부팅되면 RTC가 없으며 라우터 소프트웨어는 고정된 날짜/시간만 사용합니다(예: 소프트웨어 패치 빌드 날짜?). 날짜/시간이 확실히 잘못된데도 NTP 서버에서 계속해서 발행을 합니다.잘못된날짜이며 라우터 자체가 NTP 또는 SNTP를 사용하여 업데이트된 경우에만 올바른 날짜를 내보냅니다.

제가 몇 년 전에 작업한 BT 홈 허브의 경우 라우터가 사용할 수 있는 모든 장치를 재구성했습니다.동적 호스트 구성 프로토콜. 심지어 "Stratum 1" NTP 서버라고 주장합니다. 즉, 시간 소스(원자 시계)에 직접 연결되어 있다고 주장합니다.

라우터를 몇 번 재부팅하여 IoT 장치에서 시간 점프가 발생하는지 확인하세요.

관련 정보