我应该为 systemd 用户计时器使用 WantedBy 的 default.target 或timers.target 值吗?

我应该为 systemd 用户计时器使用 WantedBy 的 default.target 或timers.target 值吗?

除非我启用它,否则我位于的 .timer 文件~/.config/systemd/user不会显示在命令的输出中。systemctl --user list-timers --all此命令不显示禁用的 .timers 和启用的 .timers 是否正常?

[Install]由于错误,我无法在没有部分的情况下启用 .timer The unit files have no installation config。根据 freedesktop.org 文档:

计时器单位将自动具有 Before= 类型的对timers.target的依赖

这是否意味着我不必启用 .timer 即可工作?

如果我确实需要启用我的 .timer:

我相信这default.target就是软件用户登录成功后执行WantedBy

我还相信用户 systemd 实例是由 启动的pam_systemd,我相信这发生在之前default.target

所以在我看来,如果我使用default.target计时器,它将在登录后激活。如果我OnStartupSec在这种情况下使用,它会正确计算从 systemd 用户实例启动开始的时间吗?

另一方面,如果我使用timers.target,由于这是一个用户计时器,它会在登录之前激活并从激活时间开始计算秒数,还是只会在systemd --user启动后注册并开始计算时间?

答案1

自从我问这个问题以来,我更加红了,发现我的问题是基于我这边的误解 - 我认为 systemd 的用户和系统实例都依赖于同一组目标。根据每个systemd实例都使用自己设定的目标,因此很明显,在systemd的用户实例启动之前,用户计时器不会激活,因此计时器将从systemd的用户实例启动开始正确计算时间。

系统管理器启动[电子邮件受保护]每个用户的单元,它为每个用户启动一个单独的非特权 systemd 实例——用户管理器。与系统管理器类似,用户管理器启动由 default.target 拉入的单元。对于非图形会话,使用default.target。每当用户登录到图形会话时,登录管理器都会启动graphical-session.target 目标,该目标用于拉入图形会话所需的单元。当特定硬件可供用户使用时,会启动许多目标(如右侧所示)。

既然如此,我相信 timers.target 是两者中更合适的,但两者都应该可以工作。

相关内容