systemd中如何区分用户服务和系统服务?

systemd中如何区分用户服务和系统服务?

我问了一个问题昨天回复的评论之一是,有人认为这是一项“用户服务”。现在如何区分“用户服务”和系统服务?

答案1

根据文档,可以通过路径来区分单元文件。

例如;如果单元文件位于

/etc/systemd/system
/usr/lib/systemd/system
/run/systemd/system

目录,该单元属于系统。

如果它在

~/.config/systemd/user/*
/etc/systemd/user/*
$XDG_RUNTIME_DIR/systemd/user/*
/run/systemd/user/*
~/.local/share/systemd/user/*
/usr/lib/systemd/user/*

目录,它属于用户。

答案2

根据系统(1)系统单元目录的手册页:

systemd 系统管理器从各个目录读取单元配置。想要安装单元文件的包应将它们放置在以下命令返回的目录中:

pkg-config systemd --variable=systemdsystemunitdir

其他检查的目录是:

/usr/local/lib/systemd/system
/usr/lib/systemd/system

用户配置始终优先。

pkg-config systemd --variable=systemdsystemconfdir

返回系统配置目录的路径。软件包只能使用 systemctl(1) 工具的启用和禁用命令来更改这些目录的内容。 systemd.unit(5) 中提供了完整的目录列表。

然后对于用户单元目录:

类似的规则适用于用户单元目录。然而,这里遵循 XDG 基本目录规范 [6] 来查找单位。应用程序应将其单元文件放置在以下命令返回的目录中:

pkg-config systemd --variable=systemduserunitdir

全局配置在报告的目录中完成:

pkg-config systemd --variable=systemduserconfdir

systemctl(1) 工具的启用和禁用命令可以处理全局(即对于所有用户)和私有(对于一个用户)单元的启用/禁用。 systemd.unit(5) 中提供了完整的目录列表。

请注意,这些是系统的指导打包者放置不同文件的正确位置的规则,并且由打包者正确遵循这些规则。

相关内容