네트워크 및 ntp 시간 동기화가 완료될 때까지 시스템 서비스 시작을 지연하는 방법은 무엇입니까?

네트워크 및 ntp 시간 동기화가 완료될 때까지 시스템 서비스 시작을 지연하는 방법은 무엇입니까?

내 Linux 홈 서버에서 NFS 공유를 올바르게 내보내지 못하는 문제가 있습니다. 아마도 네트워크 서비스가 완전히 동기화되지 않았을 때 NFS 서비스가 너무 일찍 시작되었기 때문일 것입니다.
내 Raspberry Pi에서도 비슷한 문제가 있었습니다. 하드웨어 감시 기능을 활성화하고 부팅 시와 그 후 10분마다 업데이트되는 파일을 감시하도록 구성했습니다.
아쉽게도 오랜 종료 후(RTC 없음!) 파이를 부팅하면 네트워크에서 시간이 업데이트되기 전에 워치독이 시작됩니다.
따라서 워치독은 모니터링되는 파일을 찾는 시간 차이가 너무 크기 때문에 다시 시작을 트리거합니다.
두 경우 모두 네트워크가 완전히 가동되고 동기화될 때까지 해당 서비스의 시작을 지연하는 것이 필요하다고 생각합니다.
다음 팁을 읽었습니다.https://stackoverflow.com/questions/43001223/how-to-ensure-that-there-is-a-delay-before-a-service-is-started-in-systemd, 하지만 두 서비스 모두 표준 시스템 서비스이므로 어떻게 지연시켜야 할지 모르겠습니다.

답변1

드디어 이걸 찾았어요https://blog.debiania.in.ua/posts/2020-11-27-howto-delay-a-systemd-service-until-the-clock-is-synchronized.html, 내 문제를 해결했습니다.
이 문제는 2020년에도 이미 발생했지만, 아직도 제대로 해결되지 않은 것 같습니다.
아래 단계를 따랐더니 이제 nfs 내보내기가 제대로 작동하고 시스템 시간이 업데이트된 후에만 감시가 시작됩니다.

  1. dpkg -l | dpkg -l | grep -q "ii *chrony" && apt 삭제 chrony
  2. systemctl 활성화 --이제 systemd-timesyncd.service
  3. systemctl 활성화 --이제 systemd-time-wait-sync.service
  4. systemctl edit watchdog.service #다음 줄을 추가하세요
    [단위]
    after=time-sync.target
    want=time-sync.target
  5. systemctl 편집 nfs-server.service #4와 같은 줄을 추가합니다.

답변2

파이에도 비슷한 문제가 있습니다. 시계가 적절한 시간에 시작되도록 ntpdate를 먼저 실행하도록 ntp 시작 스크립트를 수정했습니다. (귀하의 시스템에서는 이미 이 작업을 수행할 수 있습니다.) ntpdate는 완료되기 전에 최소한 1초 이내의 정확한 시간을 유지합니다.

그런 다음 다른 스크립트가 ntp 및 network-online에 의존하도록 지시할 수 있습니다.

그것은 마치

[Unit]
After=network-online.target ntp.service

관련 정보