Вы прочитали ВСЕ man update -motd
? Ближе к концу написано:
Scripts should emit a blank line before output, and end with a newline
character. For instance:
Итак, измените свой сценарий на:
#!/bin/sh
echo
echo "Welcome user: ${USER}. Today is $(date)"
Состояние текущих активных таймеров можно показать с помощью
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.
Из комментария и ответа @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
Нет, не появляется способ узнать, когда именно будет запускаться таймер. systemd
предлагает systemctl list-timers
и systemctl status something.timer
, но они не показывают влияние AccuracySec=
и, возможно, других директив, которые сдвигают время.
Если вы установите AccuracySec=1h
на двух серверах, они оба сообщат, что один и тот же таймер на обоих серверах сработает в одно и то же время, но на самом деле они могут запускаться с разницей в час! Если вам интересно узнать, могут ли два случайных таймера столкнуться,похоже, нет никакого способа проверить окончательное расчетное время выполнения, чтобы выяснить это.
Существует открытая проблема systemd , чтобы сделать вывод таймеров списка -более точным/менее запутанным.
Кроме того, существует опция RandomizedDelaySec
, которая будет сочетаться с AccuracySec
в соответствии с справочной страницей .