我们如何可以启动一个程序,通过对method_call systemd一些会议DBUS

我们如何可以启动一个程序,通过对method_call systemd一些会议DBUS

问题描述:

对于例如: 我有一个代理服务(org.bluez.map_agent)我们如何可以启动一个程序,通过对method_call systemd一些会议DBUS

[d-BUS服务]

名称=组织.bluez.map_agent

Exec的回声= “你好”

SystemdService =蓝牙-MAP-agent.service

内容蓝牙-MAP-agent.serv的冰

[单位]

说明=启动MAP代理。

[服务]

用户=应用

ExecStart =的/ usr /斌/地图剂

ExecStop =的/ usr /斌/ killall映射剂

KillMode =过程

[安装]

WantedBy = multi-user.target

但是当dbus调用发生时,我的map-agent没有启动,可能是什么原因?

当由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使你的服务文件,只有服务将被激活。

+0

org.bluez.map_agent应该在会话总线上(即安装服务文件时的用户文件夹),并且据我所知systemctl enable xyz.service要求服务文件应该是系统服务的一部分。如果我错了,请纠正 – ASB