Como posso redefinir o tempo restante de um timer do systemd do usuário?
Eu tenho um serviço de usuário systemd:
[Unit]
Description=Remind to a take break
[Service]
ExecStart=/opt/scripts/break_reminder
Environment=PATH=/sbin:/bin:/usr/bin:/usr/sbin:/opt/scripts
[Install]
WantedBy=default.target
e um timer systemd do usuário
[Unit]
Description=Remind to a take break
[Timer]
OnStartupSec=0min
OnUnitActiveSec=30min
[Install]
WantedBy=timers.target
Editar: reiniciar o cronômetro por reinicialização e parada + início não está zerando o tempo restante.
$ systemctl --user status break_reminder.timer
● break_reminder.timer - Remind to take break
Loaded: loaded (/home/adam/.config/systemd/user/break_reminder.timer; enabled; vendor pr>
Active: active (waiting) since Sun 2021-05-30 16:19:00 CEST; 3h 48min ago
Trigger: Sun 2021-05-30 20:24:05 CEST; 16min left
Triggers: ● break_reminder.service
May 30 16:19:00 archadam systemd[383]: Started Remind to take break.
$ systemctl --user restart break_reminder.timer
$ systemctl --user status break_reminder.timer
● break_reminder.timer - Remind to take break
Loaded: loaded (/home/adam/.config/systemd/user/break_reminder.timer; enabled; vendor pr>
Active: active (waiting) since Sun 2021-05-30 20:07:24 CEST; 1s ago
Trigger: Sun 2021-05-30 20:24:05 CEST; 16min left
Triggers: ● break_reminder.service
May 30 20:07:24 archadam systemd[383]: Stopping Remind to take break.
May 30 20:07:24 archadam systemd[383]: Started Remind to take break.
$ systemctl --user stop break_reminder.timer
$ systemctl --user status break_reminder.timer
○ break_reminder.timer - Remind to take break
Loaded: loaded (/home/adam/.config/systemd/user/break_reminder.timer; enabled; vendor pr>
Active: inactive (dead) since Sun 2021-05-30 20:07:32 CEST; 1s ago
Trigger: n/a
Triggers: ● break_reminder.service
May 30 20:07:24 archadam systemd[383]: Stopping Remind to take break.
May 30 20:07:24 archadam systemd[383]: Started Remind to take break.
May 30 20:07:32 archadam systemd[383]: break_reminder.timer: Deactivated successfully.
May 30 20:07:32 archadam systemd[383]: Stopped Remind to take break.
$ systemctl --user start break_reminder.timer
$ systemctl --user status break_reminder.timer
● break_reminder.timer - Remind to take break
Loaded: loaded (/home/adam/.config/systemd/user/break_reminder.timer; enabled; vendor pr>
Active: active (waiting) since Sun 2021-05-30 20:07:39 CEST; 2s ago
Trigger: Sun 2021-05-30 20:24:05 CEST; 16min left
Triggers: ● break_reminder.service
May 30 20:07:39 archadam systemd[383]: Started Remind to take break.
Responder1
OnUnitActiveSec
vincula-se ao último horário de ativação de break_reminder.service
.
OnUnitActiveSec=
Define um temporizador relativo a quando a unidade que a unidade do temporizador está ativando foi ativada pela última vez.
(página de manual systemd.timer)
Portanto, para redefinir o tempo restante break_reminder.timer
, você precisará redefinir o carimbo de data e hora da última ativação de break_reminder.service
.
Infelizmente, não parece haver uma maneira de redefinir esse carimbo de data/hora, exceto iniciando a unidade de serviço. ( systemctl set-property
não é capaz de alterar o carimbo de data/hora e não é afetado por systemctl reset-failed
nem systemctl clean
por systemctl daemon-reexec
).
Responder2
Reinicie o serviço:
# systemctl restart break_reminder.timer
e veja se isso funciona.
Se não tentar reiniciar à força:
# systemctl stop break_reminder.timer
# systemctl start break_reminder.timer
e deixe-nos saber.