запускать скрипт, когда часы хронируют шаги

Мне нужно запустить определенную службу после того , как системные часы были правильно настроены кумом.

Системное время поддерживается хроникой ( chronyd (chrony) version 3.5 (+CMDMON +NTP +REFCLOCK +RTC -PRIVDROP -SCFILTER -SIGND +ASYNCDNS -SECHASH +IPV6 -DEBUG)).

Настройка Chrony, если применимо, такова:

      server 192.168.100.1 trust minpoll 2 maxpoll 4 polltarget 30
refclock PPS /dev/pps0 refid KPPS trust lock GNSS maxdispersion 3 poll 2
refclock SOCK /var/run/chrony.sock refid GNSS maxdispersion 0.2 noselect
makestep 0.1 -1
driftfile /var/lib/chrony/drift
rtcsync

пример «нормального статуса отслеживания»:

      / # chronyc tracking
Reference ID    : C0A86401 (192.168.100.1)
Stratum         : 2
Ref time (UTC)  : Wed Dec 01 11:52:08 2021
System time     : 0.000004254 seconds fast of NTP time
Last offset     : +0.000000371 seconds
RMS offset      : 0.000011254 seconds
Frequency       : 17.761 ppm fast
Residual freq   : +0.001 ppm
Skew            : 0.185 ppm
Root delay      : 0.000536977 seconds
Root dispersion : 0.000051758 seconds
Update interval : 16.2 seconds
Leap status     : Normal

в то время как "несинхронизированный" (начальный) статус:

      / # chronyc tracking
Reference ID    : 00000000 ()
Stratum         : 0
Ref time (UTC)  : Thu Jan 01 00:00:00 1970
System time     : 0.000000000 seconds fast of NTP time
Last offset     : +0.000000000 seconds
RMS offset      : 0.000000000 seconds
Frequency       : 0.000 ppm slow
Residual freq   : +0.000 ppm
Skew            : 0.000 ppm
Root delay      : 1.000000000 seconds
Root dispersion : 1.000000000 seconds
Update interval : 0.0 seconds
Leap status     : Not synchronised

Я, кажется, припоминаю, что клан может вызывать скрипт всякий раз, когда изменяется уровень стратуса, но мне не удалось найти ссылки.

В любом случае: есть ли способ проинструктировать crony запускать скрипт/программу или иным образом отправлять какой-либо сигнал всякий раз, когда получает/теряет отслеживание с действительным сервером?

В настоящее время я полагаюсь на довольно уродливый: while chronyc tracking | grep -q "Not synchronised"; do sleep 1; doneно активная сигнализация chronydбыло бы предпочтительнее.

Подробности:

  • Система — это (относительно) небольшое IoT-устройство под управлением Linux (Yocto).
  • У него нет RTC (он всегда запускается с часами, установленными на эпоху).
  • Система не имеет подключения к Интернету (изначально).
  • Система подключена к устройству с приемником GNSS, и оттуда выводится точное время.
  • Может пройти (иногда «очень») много времени, прежде чем GNSS получит привязку и, таким образом, сможет распространять время.
  • В какой-то момент хрони, наконец, получает правильное время и отсчитывает системные часы. После этого мне нужно запустить службу (или запустить скрипт или что-то еще).
  • я сейчас голосую chronyc trackingи статус синтаксического анализа, но это не очень приятно.

2 ответа

Предлагаю исследовать здесь .

Предлагаемая техника заключается в использовании systemdсервисная служба, которая ждет systemd-time-wait-sync.serviceдля синхронизации часов ядра.

С использованием afterв файле сервисной единицы или канале. Эти техники описаны здесь и здесь .

Я хотел сделать то же самое и пришел с пустыми руками.

Я, однако, нашел chronyc waitsync, который, по-видимому, представляет собой встроенный способ проведения опроса без необходимости явного синтаксического анализа и перехода в спящий режим. Это работает достаточно хорошо для моего случая, так как мне нужно только отложить одно действие запуска.

Существование этой команды также намекает (хотя ни в коем случае не доказывает), что прямой запуск может не поддерживаться. Если запуск является жестким требованием, rsyslogd может помочь .


Кстати, можно только восхищаться энтузиазмом поклонников systemd, распространяющих любовь, даже когда их предполагаемый ответ явно и совершенно неуместен.

Очевидно, что целевая система НЕ использует systemd. Вопрос о chronyd, не оsystemd-timesyncd, пока systemd-time-wait-sync.serviceотносится только к последнему.

Другие вопросы по тегам