Как прочитать значение TimeoutStartSec в конфигурации systemD из приложения через интерфейсы Dbus - PullRequest
0 голосов
/ 11 июня 2019

В моей конфигурации сервиса TimeoutStartSec == 100s.Согласно странице справочника ... мое приложение должно уведомить systemD sd_notify (READY = 1) в течение <100 с.Если нет, сервис переводится в сбойное состояние.<a href="https://www.freedesktop.org/software/systemd/man/systemd.service.html" rel="nofollow noreferrer">https://www.freedesktop.org/software/systemd/man/systemd.service.html Но в случае, если я хочу что-то сделать (например, просто распечатать какой-нибудь журнал сказал: запуск не выполняется вовремя).до того, как мой сервис фактически перешел в состояние сбоя.Есть ли какие-либо изменения, чтобы сделать это ... Моя идея - создать таймер, который имеет то же значение с TimeoutStartSec == xx s, тогда я могу сделать что-то до истечения таймера.Но вопрос в том, что TimeoutStartSec == xx динамически настраивается пользователем - в моем проекте ... Так что я ожидаю некоторый интерфейс Dbus, который будет предлагать читать TimeoutStartSec из моего приложения ... Я проверил https://www.freedesktop.org/wiki/Software/systemd/dbus/, но не нашелсоответствующее свойство.

Я использую systemD в Linux, который свободно использует интерфейсы Dbus systemD.

1 Ответ

0 голосов
/ 17 июня 2019

Я нашел решение.SystemD фактически предоставляет эту информацию

dbus-send --system --dest=org.freedesktop.systemd1 --print-reply /org/freedesktop/systemd1/unit/ServiceName_2eservice \
org.freedesktop.DBus.Properties.Get string:org.freedesktop.systemd1.Service string:TimeoutStartUSec

Примечание. Ваше имя службы необходимо изменить, чтобы точно указать путь к объекту. ServiceName.service адаптируется к ServiceName_2eservice

...