Cómo restablecer el tiempo restante del temporizador systemd del usuario

Cómo restablecer el tiempo restante del temporizador systemd del usuario

¿Cómo puedo restablecer el tiempo restante de un temporizador systemd de usuario?

Tengo un servicio systemd de usuario:

[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

y un temporizador systemd de usuario

[Unit]
Description=Remind to a take break

[Timer]
OnStartupSec=0min
OnUnitActiveSec=30min

[Install]
WantedBy=timers.target

Editar: reiniciar el temporizador tanto reiniciando como deteniendo + iniciando no restablece el tiempo 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.

Respuesta1

OnUnitActiveSecse une a la última hora de activación de break_reminder.service.

OnUnitActiveSec=
Define un temporizador relativo a cuándo se activó por última vez la unidad que está activando el temporizador.

(página de manual de systemd.timer)

Entonces, para restablecer la hora restante en break_reminder.timer, deberá restablecer la marca de tiempo de la última activación de break_reminder.service.

Desafortunadamente, no parece haber una manera de restablecer esta marca de tiempo excepto iniciando la unidad de servicio. ( systemctl set-propertyno puede cambiar la marca de tiempo y no se ve afectado por systemctl reset-failedni systemctl cleanpor systemctl daemon-reexec).

Respuesta2

Reinicie el servicio:

# systemctl restart break_reminder.timer

y ver si esto funciona.

Si no intenta forzar el reinicio:

# systemctl stop break_reminder.timer
# systemctl start break_reminder.timer

y háganoslo saber.

información relacionada