systemd 타이머가 다음에 실행될 때를 알 수 있는 방법이 있습니까?

systemd 타이머가 다음에 실행될 때를 알 수 있는 방법이 있습니까?

나는 systemd 타이머를 테스트하고 있으며 성공하지 못한 채 기본 시간 제한을 무시하려고 합니다. 서비스가 다음에 실행될 시기를 시스템에 알려주는 방법이 있는지 궁금합니다.

일반 파일( /lib/systemd/system/snapbackend.timer):

# Documentation available at:
# https://www.freedesktop.org/software/systemd/man/systemd.timer.html

[Unit]
Description=Run the snapbackend service once every 5 minutes.

[Timer]
# You must have an OnBootSec (or OnStartupSec) otherwise it does not auto-start
OnBootSec=5min
OnUnitActiveSec=5min
# The default accuracy is 1 minute. I'm not too sure that either way
# will affect us. I am thinking that since our computers will be
# permanently running, it probably won't be that inaccurate anyway.
# See also:
# http://stackoverflow.com/questions/39176514/is-it-correct-that-systemd-timer-accuracysec-parameter-make-the-ticks-slip
#AccuracySec=1

[Install]
WantedBy=timers.target

# vim: syntax=dosini

파일 덮어쓰기( /etc/systemd/system/snapbackend.timer.d/override.conf):

# This file was auto-generated by snapmanager.cgi
# Feel free to do additional modifications here as
# snapmanager.cgi will be aware of them as expected.
[Timer]
OnUnitActiveSec=30min

다음 명령을 실행했는데 타이머가 여전히 5분마다 똑딱거립니다. systemd에 버그가 있나요?

sudo systemctl stop snapbackend.timer
sudo systemctl daemon-reload
sudo systemctl start snapbackend.timer

그래서 저는 타이머가 다음에 언제 똑딱거릴지 어떻게 알 수 있는지 궁금합니다. 5분 이내인지 바로 알려주기 때문이죠. 또는 30분 정도 걸렸지만 systemctl status snapbackend.timer이 내용은 언급한 적이 없습니다. 현재 사용되고 있는 지연 시간을 알려주는 명령이 있는지 궁금합니다.

관심 있는 분들을 위해 서비스 파일( )도 있지만 /lib/systemd/system/snapbackend.service타이머 틱에는 영향을 주지 않아야 한다고 생각합니다...

# Documentation available at:
# https://www.freedesktop.org/software/systemd/man/systemd.service.html

[Unit]
Description=Snap! Websites snapbackend CRON daemon
After=snapbase.service snapcommunicator.service snapfirewall.service snaplock.service snapdbproxy.service

[Service]
# See also the snapbackend.timer file
Type=simple
WorkingDirectory=~
ProtectHome=true
NoNewPrivileges=true
ExecStart=/usr/bin/snapbackend
ExecStop=/usr/bin/snapstop --timeout 300 $MAINPID
User=snapwebsites
Group=snapwebsites
# No auto-restart, we use the timer to start once in a while
# We also want to make systemd think that exit(1) is fine
SuccessExitStatus=1
Nice=5
LimitNPROC=1000
# For developers and administrators to get console output
#StandardOutput=tty
#StandardError=tty
#TTYPath=/dev/console
# Enter a size to get a core dump in case of a crash
#LimitCORE=10G

[Install]
WantedBy=multi-user.target

# vim: syntax=dosini

답변1

현재 활성 타이머의 상태는 다음 명령을 사용하여 표시할 수 있습니다 systemctl list-timers.

$ systemctl list-timers --all
NEXT                         LEFT     LAST                         PASSED       UNIT                         ACTIVATES
Wed 2016-12-14 08:06:15 CET  21h left Tue 2016-12-13 08:06:15 CET  2h 18min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service

1 timers listed.

답변2

@phg 댓글과 답변에서 답변이 있는 페이지를 찾았습니다. 타이머는총계먼저 재설정해야 합니다. 그렇지 않으면 이전 항목이 그대로 남아 있습니다. 이는 달력에 유용하지만 모든 타이머에 대해 동일하게 작동합니다.

타이머를 새 값으로 변경하기 전에 타이머를 재설정하는 항목이 있습니다. 이는 다음과 같이 작동합니다.

# This file was auto-generated by snapmanager.cgi
# Feel free to do additional modifications here as
# snapmanager.cgi will be aware of them as expected.
[Timer]
OnUnitActiveSec=
OnUnitActiveSec=30min

답변3

아니요, 다음에 타이머가 언제 실행될지 정확히 알 수 있는 방법은 없습니다. systemdsystemctl list-timers, 그러나 이것들은 시간을 변경할 수 있는 다른 지침뿐만 아니라 systemctl status something.timer영향을 미치는 것으로 나타나지 않았습니다 .AccuracySec=

두 서버에 이를 설정 하면 AccuracySec=1h두 서버 모두에서 동일한 타이머가 정확히 동시에 실행된다고 보고하지만 실제로는 한 시간 간격으로 실행될 수 있습니다! 두 개의 무작위 타이머가 충돌할 수 있는지 알고 싶다면 최종 계산된 실행 시간을 확인하여 알아내는 것은 불가능해 보입니다.

하나 있다시스템 문제가 해결되었습니다.목록 타이머의 출력을 더 정확하고 덜 혼란스럽게 만듭니다.

또한 다음을 기반으로 하는 RandomizedDelaySec옵션이 있습니다.AccuracySec매뉴얼 페이지.

답변4

현재 상태를 보려면 $SYSTEMD_TIMER다음을 실행하세요.

systemctl list-timers $SYSTEMD_TIMER

# will give output simmilar to
# NEXT                        LEFT         LAST PASSED UNIT           ACTIVATES
# Sun 2022-01-09 21:33:00 CET 2h 9min left n/a  n/a    $SYSTEMD_TIMER $SYSTEMD_SERVICE

따라서 특정 문제에 대한 명령은 입니다 systemctl list-timers snapbackend.timer.

관련 정보