2015-07-14 3 views
2

Я создал новую службу systemd, с помощью которой я хотел бы активировать функцию через вызов dbus. Служба просто выполняет сценарий оболочки.Использование gdbus для запуска службы systemd

Я определил службу здесь:

/lib/systemd/system/testamundo.service 


[Unit] 
Description=Testamundo 

[Service] 
Type=dbus 
BusName=org.freedesktop.testamundo 
ExecStart=/home/test/systemd/testamundo.sh 

Я также определил сервис D-Bus для него здесь:

/usr/share/dbus-1/system-services 

[D-BUS Service] 
Name=org.freedesktop.testamundo 
Exec=/usr/sbin/console-kit-daemon --no-daemon 
User=root 
SystemdService=testamundo.service 

Я пытаюсь запустить его с помощью gdbus, это это команда, которую я пытаюсь использовать:

sudo gdbus call --system --dest org.freedesktop.systemd1 --object-path /org/freedesktop/systemd1 --method org.freedesktop.systemd1.StartUnit "org.freedesktop.testamundo" 

Если я использую --system как я выше команда возвращает с неизвестным методом ошибка, если я использую --session, он возвращает код выхода 1 из дочернего процесса. Когда я смотрю на journalctl с --session и -system, я могу видеть эту команду, но кроме нее никакой дополнительной информации.

Цените любые мысли или советы, спасибо!

ответ

2

Ваша команда dbus использует несуществующие интерфейсы. Прежде всего это org.freedesktop.systemd1.Manager.Start блок не org.freedesktop.systemd1.StartUnit. Во-вторых, org.freedesktop.systemd1.Manager.Start требует 2 параметра, имя службы и режим запуска. Ссылка: http://www.freedesktop.org/wiki/Software/systemd/dbus/

Вы определили услугу dbus, но вы обходите dbus, запросив системуdd активировать услугу. Другое замечание: dbus фактически посылает сигнал systemd не вызову метода.

У вас есть все на месте, если вы просто выполняете интроспекцию на своем сервисе, ее следует активировать.

sudo gdbus call --system --dest org.freedesktop.testamundo --object-path /org/freedesktop/testamundo --method org.freedesktop.DBus.Introspectable. Introspect 
+0

Еще раз спасибо Умуту, этот и ваш другой ответ был огромной помощью! – Hoofamon

Смежные вопросы