有没有办法告诉systemd在某些路径中搜索服务文件?
作为此手册页状态,搜索路径是在编译时确定的。所以我尝试XDG_DATA_DIRS
在/etc/systemd/user.conf
Environment="XDG_DATA_DIRS=/custom/path/lib"
但它不起作用。
PS:我的服务是通过DBus激活的。
有没有办法告诉systemd在某些路径中搜索服务文件?
作为此手册页状态,搜索路径是在编译时确定的。所以我尝试XDG_DATA_DIRS
在/etc/systemd/user.conf
Environment="XDG_DATA_DIRS=/custom/path/lib"
但它不起作用。
PS:我的服务是通过DBus激活的。
我相信您必须将其设置为
$XDG_DATA_DIR
没有 bashrc/profile.d 环境变量,而是设置为 systemd 环境变量。我相信systemd.environment-generator的第一个示例可以满足您的要求。我在下面复制了它以供快速参考:
另一种可能性是在每个服务文件中或每个服务文件中的文件中定义 systemd 变量,如
.conf
其他SO中所述/etc/systemd/system.conf.d/
--system 总线
systemd
--system
总线是使用 systemd 的“正常”方式。它是系统范围的总线,以root
. 将总线的man systemd.unit
负载路径描述为:--system
该手册页还说:
将此变量设置为
SYSTEMD_UNIT_PATH=/my/path/:
将添加/my/path
到加载路径的前面。但是,我们不能简单地从命令行运行它,因为 systemd 已经在运行要设置
systemd
--system
总线的环境,我们需要查看man systemd-system.conf
. 然后在这些文件中设置值以影响系统总线:关于在此配置中放置的内容,手册页描述:
因此将此文件安装为
/etc/systemd/system.conf.d/mypath.conf
:免责声明:虽然在我的机器上的版本 250.4 中有
SYSTEMD_UNIT_PATH
记录,但这里没有记录。这可能意味着他们正在弃用该功能。如果您的机器的手册页中没有描述,那么它还没有(或不再)受支持。在这种情况下,唯一的选择是在每个单元存在的任何位置创建符号链接。man systemd.unit
SYSTEMD_UNIT_PATH
/etc/systemd/system/
--user 总线
systemd
--user
总线是为每个登录的用户运行的东西。它对于用户备份、用户挂载、启动 GUI 或其他桌面环境的东西(如 VNC 服务器)很有用。要管理此总线上的单元,请运行systemctl --user {start,stop} ...
(不带sudo
)。 将总线的man systemd.unit
负载路径描述为:--user
要设置 systemd
--user
总线的环境,我们需要查看man systemd-user.conf
. 这些文件中的此设置值会影响user
总线:在这种情况下,我不确定我们是否应该设置
DefaultEnviornment=
orManagerEnviornment=
,所以我会同时设置。然后你需要把你的单位
/my/path/systemd/user/