Второе поле в команде who
показывает консольный (терминал ), на котором зарегистрированы пользователи.
username tty2 2017-07-16 19:05 (:0)
Persistent=false
( т. е. по умолчанию )отключает функцию отлова таймеров, пропущенных во время выключения системы. В вашем случае система находится в строке -, а таймер опущен -, если OnCalendar
период прошел (, вероятно, потому, что foo.service уже запущен ), он все еще ждет своего момента для запуска " через минуту/день после последнего запуска " -не после последней попытки/проверки/попытки запуска , что означает ровно сразу после остановки foo.service .
Это следствие, цитируяman systemd.timer
:Обратите внимание, что в случае, если блок, который нужно активировать, уже активен в то время, когда истекает время таймера, он не перезапускается, а просто остается работающим . В настоящее время я не вижу прямого способа сбросить таймер, если таймер уже истек, но действие было пропущено из-за того, что служба все еще работает.
Косвенным методом может быть автоматический -перезапуск таймера, что-то вродеfoo-try_restart.service
вызова попыткой systemctl restart foo-try_restart.timer
перед systemctl start foo.service
. Поскольку ваш foo.service
отличается от этого вновь созданногоfoo-try_restart.service
(с Type=oneshot
, безRemainAfterExit
)он foo-try_restart.timer
всегда будет срабатывать, поэтому его таймер будет сбрасываться после каждого периода.