사용자 시스템 타이머의 남은 시간을 재설정하는 방법

사용자 시스템 타이머의 남은 시간을 재설정하는 방법

사용자 시스템 타이머의 남은 시간을 어떻게 재설정할 수 있나요?

사용자 시스템 서비스가 있습니다.

[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

그리고 사용자 시스템 타이머

[Unit]
Description=Remind to a take break

[Timer]
OnStartupSec=0min
OnUnitActiveSec=30min

[Install]
WantedBy=timers.target

편집: 재시작 및 중지 + 시작으로 타이머를 다시 시작해도 남은 시간이 재설정되지 않습니다.

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

답변1

OnUnitActiveSec의 마지막 활성화 시간에 바인딩됩니다 break_reminder.service.

OnUnitActiveSec=
타이머 장치가 활성화되는 장치가 마지막으로 활성화된 시점을 기준으로 타이머를 정의합니다.

(systemd.timer 맨페이지)

따라서 의 남은 시간을 재설정하려면 break_reminder.timer의 마지막 활성화 타임스탬프를 재설정해야 합니다 break_reminder.service.

불행하게도 실제로 서비스 장치를 시작하는 것 외에는 이 타임스탬프를 재설정할 수 있는 방법이 없는 것 같습니다. ( systemctl set-property타임스탬프를 변경할 수 없으며 이나 의 영향을 받지 systemctl reset-failed않습니다 systemctl clean. systemctl daemon-reexec)

답변2

서비스를 다시 시작합니다.

# systemctl restart break_reminder.timer

그리고 이것이 작동하는지 확인하세요.

강제 재시작을 시도하지 않는 경우:

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

그리고 우리에게 알려주세요.

관련 정보