我们如何在某些会话dbus上通过method_call上的systemd启动进程

时间:2016-01-29 12:03:46

标签: dbus systemd

我有一个座席服务(org.bluez.map_agent

[D-BUS Service]
Name=org.bluez.map_agent
Exec=echo "Hello"
SystemdService=bluetooth-map-agent.service

bluetooth-map-agent.service

的内容
[Unit]
Description=launch MAP agent.

[Service]
User=app
ExecStart=/usr/bin/map-agent
ExecStop=/usr/bin/killall map-agent
KillMode=process

[Install]
WantedBy=multi-user.target

但是当dbus调用发生时,我的地图代理没有启动,可能是什么原因?

1 个答案:

答案 0 :(得分:0)

当dbus创建所需的总线时,使您的服务由systemd自身启动。这可以使用以下服务文件来实现:

[Unit] 
Description=launch MAP agent.

[Service]
Type=dbus
User=app
BusName=org.bluez.map_agent
ExecStart=/usr/bin/map-agent
ExecStop=/usr/bin/killall map-agent
KillMode=process

[Install]
WantedBy=multi-user.target

使用systemctl enable xyz.service

启用您的服务文件

Systemd将等待总线名称在dbus上获取,然后才会激活服务。