有没有人有一个示例,或者链接到如何定义由d-bus激活的systemd .service的示例?
我的理解是,如果我在这里创建一个test.service文件:
/usr/share/dbus-1/services/test.service
Run Code Online (Sandbox Code Playgroud)
具有以下内容:
[D-BUS Service]
Name=org.me.test
Exec="/tmp/testamundo.sh"
Run Code Online (Sandbox Code Playgroud)
现在可以通过对systemd.Manager的d-bus调用来启动/停止服务吗?如果是这样,怎么样?
Umu*_*mut 14
让我们来看看systemd,hostnamed附带的一个服务.
# cat /usr/share/dbus-1/system-services/org.freedesktop.hostname1.service
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[D-BUS Service]
Name=org.freedesktop.hostname1
Exec=/bin/false
User=root
SystemdService=dbus-org.freedesktop.hostname1.service
Run Code Online (Sandbox Code Playgroud)
魔术是SystemdService=指令.指定的服务SystemdService=是dbus-daemon要求systemd激活的服务.
我们期望在systemd服务目录中有一个名为dbus-org.freedesktop.hostname1.service的服务.
# readlink /usr/lib/systemd/system/dbus-org.freedesktop.hostname1.service
systemd-hostnamed.service
Run Code Online (Sandbox Code Playgroud)
你去,这样一个dbus服务org.freedesktop.hostname1.service告诉systemd激活systemd服务systemd-hostnamed.service.
而systemd服务看起来像
# cat /usr/lib/systemd/system/systemd-hostnamed.service
...
...
[Service]
BusName=org.freedesktop.hostname1
...
...
Run Code Online (Sandbox Code Playgroud)
systemd服务文件的魔力是BusName=指令.该指令告诉systemd在继续之前等到给定的总线名称出现在总线上.
注意:dbus服务的语法与systemd服务完全不同.你需要两者都能有一个dbus激活的守护进程.
| 归档时间: |
|
| 查看次数: |
9746 次 |
| 最近记录: |