Я тестирую системный таймер и пытаюсь изменить его тайм-аут по умолчанию, но безуспешно. Мне интересно, есть ли способ попросить 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
источник
systemctl list-timers
?Ответы:
Состояние текущих таймеров может быть показано с помощью
systemctl list-timers
:источник
Из комментария и ответа @phg я нашел страницу с ответом. Таймеры являются кумулятивными, и вам необходимо сначала сбросить их, в противном случае предыдущая запись останется. Это полезно для календарей, но работает одинаково со всеми таймерами.
Наличие одной записи, которая сбрасывает таймер перед тем, как изменить его на новое значение, работает как ожидалось:
источник
Нет, там не появится способ увидеть точно, когда таймер будет работать дальше.
systemd
предложенияsystemctl list-timers
иsystemctl status something.timer
, но те, которые не показывают влияниеAccuracySec=
и, возможно, другие директивы, которые сдвигают время.Если вы установите
AccuracySec=1h
на два сервера, они оба сообщат, что один и тот же таймер на обоих серверах будет срабатывать в одно и то же время, но на самом деле они могут запускаться с интервалом до часа! Если вам интересно узнать, могут ли столкнуться два рандомизированных таймера, похоже, нет способа проверить окончательное рассчитанное время выполнения, чтобы выяснить это.Существует системная проблема, позволяющая сделать вывод таймеров списка более точным / менее запутанным.
источник
list-timers
, уже достаточно хороша, чтобы понять, правильно ли вы используете таймеры или нет.