Действительно ли systemd-timesyncd.service доступен с помощью dbus API?

Я должен считать состояние systemd-timesyncd.service, видеть ли, синхронизировалось ли это с ntp, которые синхронизировали Системные часы, флаг не полезен, так как это не показывает соответствующую информацию

0
задан 14 February 2020 в 12:09

1 ответ

Существует DBUS. См. документацию разработчика. У них есть это как пример:

$ gdbus introspect --system --dest org.freedesktop.timedate1 --object-path /org/freedesktop/timedate1
node /org/freedesktop/timedate1 {
  interface org.freedesktop.timedate1 {
    methods:
      SetTime(in  x usec_utc,
              in  b relative,
              in  b user_interaction);
      SetTimezone(in  s timezone,
                  in  b user_interaction);
      SetLocalRTC(in  b local_rtc,
                  in  b fix_system,
                  in  b user_interaction);
      SetNTP(in  b use_ntp,
             in  b user_interaction);
    signals:
    properties:
      readonly s Timezone = 'Europe/Berlin';
      readonly b LocalRTC = false;
      readonly b NTP = true;
  };
  interface org.freedesktop.DBus.Properties {
  };
  interface org.freedesktop.DBus.Introspectable {
  };
  interface org.freedesktop.DBus.Peer {
  };
};

Это должно "установить" через dbus; не "добираться".

Я должен считать состояние systemd-timesyncd.service видеть ли, синхронизировалось ли это с ntp

Совершенно другой вопрос все же. Как с большинством (если не все?) systemd сервисы: они используют базовую процедуру, чтобы сделать что-то. systemd-timesyncd использование ntp таким образом, Ваш вопрос... не корректен. Из страницы справочника:

systemd-timesyncd будет искать файлы с a .list расширение в ntp-units.d/ каталоги. Каждый файл анализируется, как список единицы называет, один на строку. Проигнорированы пустые строки и строки с комментариями (" # "). Файлы читаются из /usr/lib/systemd/ntp-units.d/ и соответствующие каталоги под /etc/, /run/, /usr/local/lib/. Файлы в/etc/переопределяют файлы с тем же именем в /run/, /usr/local/lib/, и /usr/lib/. Файлы в/run/переопределяют файлы с тем же именем под /usr/. Пакеты должны установить свои конфигурационные файлы в /usr/lib/ (пакеты распределения) или /usr/local/lib/ (локальные установки).


То, что Вы хотите, возможно с

timedatectl 

команда.

timedatectl может использоваться для показа текущего статуса услуг по синхронизации времени, например, systemd-timesyncd.service.

текущие настройки состояния Show системных часов и RTC, включая то, активна ли синхронизация сетевого времени. Если никакая команда не указана, это - подразумеваемое значение по умолчанию.

шоу Показывает ту же информацию состоянием, но в машиночитаемой форме. Эта команда предназначается, чтобы использоваться каждый раз, когда компьютерный-parsable вывод требуется. Используйте состояние при поиске отформатированного человекочитаемого вывода.

0
ответ дан 20 February 2020 в 22:53

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

Похожие вопросы: