таймер systemd работает в неопределенное время

Я бегаю sync.timer а также sync.service юнит-файлы на systemd 245 (245.4-4ubuntu3.13) который был настроен за последние пару дней следующим образом:

      # sync.service
[Unit]
Description=Run sync

[Service]
TimeoutStartSec=1200
Type=oneshot
ExecStart=/bin/sync.sh
User=auto
RemainAfterExit=yes
      # sync.timer
[Unit]
Description=Run sync daily between 1am - 3am EST

[Timer]
OnCalendar=*-*-* 01:00:00 America/New_York
Unit=sync.service
RandomizedDelaySec=2hr

[Install]
WantedBy=timers.target

Когда я изначально создавал эти файлы модулей, они запускались в 07:45:14 UTC (02:45 AM EST) на следующий день, как и ожидалось. Однако служба каким-то образом работает в 00:02:xx UTC со дня 2 вместо указанного периода времени (обратите внимание, как таймер находится в 06:42:14 UTC что правильно, но journalctl сервисного подразделения говорит, что он работал на 00:02:26 UTC для последнего запуска)

      # systemctl list-timers
NEXT                        LEFT          LAST                        PASSED        UNIT                         ACTIVATES
...
n/a                         n/a           Tue 2021-11-16 06:42:14 UTC 17h ago       sync.timer       sync.service
      # journalctl -u sync.service
-- Logs begin at Thu 2021-11-11 21:02:16 UTC, end at Wed 2021-11-17 00:06:30 UTC. --
Nov 13 07:45:14 host-16core systemd[1]: Starting sync 
...
Nov 16 00:02:26 host-16core systemd[1]: Starting sync
...
Nov 17 00:02:03 host-16core systemd[1]: Starting sync
      # timer status
 sync.timer - Run sync daily between 1am - 3am EST
     Loaded: loaded (/etc/systemd/system/sync.timer; enabled; vendor preset: enabled)
     Active: active (waiting) since Fri 2021-11-12 18:20:23 UTC; 4 days ago
    Trigger: n/a
    Triggers: ● sync.service

Nov 12 18:20:23 host-16core systemd[1]: Started Run sync daily between 1am - 3am EST.

# service status
● sync.service - Run sync
     Loaded: loaded (/etc/systemd/system/sync.service; static; vendor preset: enabled)
     Active: active (exited) since Wed 2021-11-17 00:02:04 UTC; 15min ago
TriggeredBy: ● sync.timer
    Process: 440319 ExecStart=/bin/sync.sh (code=exited, status=0/SUCCESS)
   Main PID: 440319 (code=exited, status=0/SUCCESS)

Nov 17 00:02:03 host-16core systemd[1]: Starting Run sync

У меня пара вопросов:

  1. Почему ACTIVATE а также LEFT столбцы имеют n/a значение, когда таймер все еще работает по расписанию?
  2. Почему отметка времени в журнале службы синхронизации не совпадает с отметкой таймера LAST столбец?
  3. Почему служба синхронизации запускается повторно в 2 часа ночи по всемирному координированному времени?

1 ответ

  1. таймер будет иметь n/atigger, если целевая служба все еще работает. В этом случае имел RemainAfterExit=yesнастройка, поэтому, когда он закончил работу, он остался как active (exited). Удаление этого параметра гарантирует, что служба завершится через inactive (dead)состояние и позволяет таймеру перезапустить его
  2. Смотри ответ №3
  3. У нас был отдельный скрипт, который перезапускал another.service(зависимость от ) в полночь. Это вызвало sync.serviceперезапустить также
Другие вопросы по тегам