如何自动启动用户 systemd.timer (s)?

Grz*_*cki 7 configuration systemd-timer

我已经设置了几个用户 systemd.timer(s)。

如何让它们自动启动?(在系统启动时或用户登录到 X 会话时)。

在我重新启动系统后(甚至systemctl --user enable在重新启动之前运行,即没有帮助)我没有运行:

~$ systemctl --user enable {rsync_backup1,rsync_another_backup}.timer 
~$ systemctl --user list-timers --all
0 timers listed.
Run Code Online (Sandbox Code Playgroud)

在这里,我需要使用以下命令来启动它们:

~$ systemctl --user start {rsync_backup1,rsync_another_backup}.timer           
~$ systemctl --user list-timers --all
NEXT                          LEFT         LAST                          PASSED UNIT                          
Sun 2016-07-31 13:26:45 CEST  1h 16min ago Sun 2016-07-31 14:43:32 CEST  2s ago rsync_backup1
Sun 2016-07-31 13:26:45 CEST  1h 16min ago Sun 2016-07-31 14:43:32 CEST  2s ago rsync_another_backup

2 timers listed.
~$ 
Run Code Online (Sandbox Code Playgroud)

以下是当前如何配置计时器的示例:

$HOME/.config/systemd/user/rsync_backup1.service :

[Unit]
Description=rsync --delete /home/USER data to NASUSER@NAS

[Service]
Type=simple
ExecStart=/home/USER/scripts/rsync_backup1.sh
Run Code Online (Sandbox Code Playgroud)

$HOME/.config/systemd/user/rsync_backup1.timer :

[Unit]
Description=Runs every 12 minutes rsync --delete /home/USER data to NASUSER@NAS

[Timer]
OnBootSec=12min
AccuracySec=10min
OnCalendar=*:0/12
Unit=rsync_backup1.service

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

PS 是的,我知道我可以将启动计时器的命令放入.bashrc.xinit或我的窗口管理器“启动”脚本中。我要问的是:是否有“systemd”“干净”的方式来定义它在每次重新启动(/登录)后运行?

ets*_*ner 5

首先,就像其他人所说的那样,您需要将它们安装为WantedBy=default.target而不是WantdBy=multi-user.target. 这是允许启用用户单元的标准方法。

而且,如果您希望它们在启动时启动,请参阅有关在启动时启动 systemd 用户单元而不是与登录绑定的ArchWiki 条目。

简而言之:

# loginctl enable-linger username
Run Code Online (Sandbox Code Playgroud)

(顺便说一下,Unit=rsync_backup1.service这是多余的,因为计时器和服务文件具有相同的基本名称)