Como iniciar o usuário systemd.timer (s) automaticamente?

4

Eu configurei poucos usuários systemd.timer (s).

Como fazê-los começar automaticamente? (no início do sistema ou uma vez usuário logado na sessão X).

Depois de reiniciar o sistema (mesmo systemctl --user enable foi executado antes de reiniciar, ou seja, não ajuda) Eu não tenho nenhum em execução:

~$ systemctl --user enable {rsync_backup1,rsync_another_backup}.timer 
~$ systemctl --user list-timers --all
0 timers listed.

Aqui eu comandos que preciso usar para iniciá-los depois:

~$ 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.
~$ 

Aqui está um exemplo de como os temporizadores estão atualmente configurados:

$ 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

$ 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

P.S. Sim, sei que posso descartar comandos, que iniciam meus timers em .bashrc ou .xinit ou em meus scripts de "inicialização" do Gerenciador de Janelas. O que eu estou perguntando é: existe uma maneira "limpa" de "systemd" definir isso para ser executado após cada reinicialização (/ login)?

    
por Grzegorz Wierzowiecki 31.07.2016 / 16:07

1 resposta

2

Primeiro , como os outros disseram, você deseja que eles sejam instalados com WantedBy=default.target em vez de WantdBy=multi-user.target . Esta é a maneira padrão de permitir a habilitação de unidades do usuário.

Mas também, se você quiser que eles iniciem na inicialização, consulte esta entrada do ArchWiki sobre o início de unidades de usuário do systemd na inicialização em vez de estar vinculada ao login.

Resumindo:

# loginctl enable-linger username

(By the way, Unit=rsync_backup1.service é redundante desde o temporizador e arquivo de serviço tem o mesmo nome base)

    
por 03.05.2017 / 15:09