我们如何可以启动一个程序,通过对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使你的服务文件,只有服务将被激活。
org.bluez.map_agent应该在会话总线上(即安装服务文件时的用户文件夹),并且据我所知systemctl enable xyz.service要求服务文件应该是系统服务的一部分。如果我错了,请纠正 – ASB