Отслеживать результат вызова dbus startUnit в systemdLinux

Ответить
Anonymous
 Отслеживать результат вызова dbus startUnit в systemd

Сообщение Anonymous »

Контекст

Я разрабатываю приложение, которое выполняет вызовы dbus для управления модулями systemd.
Чтобы получить представление о вызовах, я пишу небольшой сценарий оболочки это должно обнаружить неисправный модуль, например systemctl:

Код: Выделить всё

user$ systemctl --user start error-out.service
Job for error-out.service failed because ...

Что я пробовал

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

Код: Выделить всё

user$ dbus-send --session --print-reply --dest=org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager.StartUnit string:"error-out.service" string:"fail"

method return time=1736951345.318505 sender=:1.0 -> destination=:1.5481 serial=21872 reply_serial=2
object path "/org/freedesktop/systemd1/job/63442"
Параметры этого вызова описаны в разделе «Интерфейс D-Bus systemd», но в этом документе вообще не приводятся примеры. Что меня беспокоит, так это получение статуса созданной работы. В документах говорится:

Этого можно добиться без гонок, сначала подписавшись на сигнал JobRemoved(), затем вызвав StartUnit() и используя метод возвращенный объект задания для фильтрации несвязанных сигналов JobRemoved() до тех пор, пока не будет получен нужный, который затем будет содержать результат операции запуска

Я понимаю что мне следует делать, но как это сделать, мне довольно неясно, даже после поиска в Google и чтения соответствующих частей исходного кода systemctl.

Вопрос

Как отслеживать сбой модуля systemd при запуске модуля через интерфейс dbus?

Подробнее здесь: https://stackoverflow.com/questions/793 ... to-systemd
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»