Из-за временных ограничений на территории РФ наблюдаются проблемы с оплатой. Если платёж не проходит, оставьте запрос в службу поддержки.Служба поддержки работает 24/7 — мы всегда на связи по вопросам хостинга и серверов.Открыт прием заявок на аренду выделенных серверов и размещение оборудования в дата-центре.Напоминаем: рекомендуем включить резервное копирование для дополнительной защиты данных.Доступна новая линейка VPS/VDS с NVMe-дисками и увеличенной производительностью.Технические работы на части серверов завершены. Все сервисы работают в штатном режиме.
Статья3 мин чтенияПросмотры0

Задание по расписанию не выполнилось: проверяем таймер systemd

Как связать таймер с запускаемой службой, проверить прошлый и следующий запуск и не принять активный таймер за успешное выполнение задания.

Настольный таймер рядом с сетевым устройством
В этой статье

Таймер отмечен как активный, но выгрузка каталога не появилась. Это возможно: таймер отвечает за момент запуска, а работу выполняет отдельная служба. Проверять нужно обе части. Иначе зелёный статус расписания может скрывать ошибку самого задания.

Найдите таймер в списке

Примеры предназначены для Linux с systemd. Они читают состояние и описание unit, не запускают задание повторно. Начните со списка, включая неактивные таймеры:

systemctl list-timers --all --no-pager

Посмотрите прошлое срабатывание, следующий запуск и связанный service. Время следующего события не является обещанием успешного результата. Также учитывайте, что список системного менеджера не показывает автоматически все пользовательские таймеры.

Для таймеров текущего пользователя используется отдельная команда:

systemctl --user list-timers --all --no-pager

Если пользовательского менеджера нет в текущем сеансе, команда может не подключиться. Это свойство окружения, а не подтверждение поломки всего планировщика.

Прочитайте условия запуска

Далее используйте точное имя из списка. В следующем примере backup.timer — условное имя, его необходимо заменить:

systemctl cat backup.timer

Проверьте условия календарного или относительного запуска и указанный unit. Если имя службы не задано явно, у таймера обычно используется соответствующее базовое имя. Не предполагайте, что любое описание с названием «backup» выполняет именно нужную резервную копию.

Параметры случайной задержки и точности могут сдвигать фактическое срабатывание относительно ожидаемой минуты. У календарных таймеров настройка Persistent влияет на обработку пропущенного времени при последующей активации. Её смысл нельзя переносить на все виды таймеров без чтения конфигурации.

Проверьте результат службы

Возьмите имя service из списка и посмотрите его состояние и журнал за нужный период. Для одноразового успешно завершившегося задания неактивное состояние может быть нормальным. Важнее код завершения и ожидаемый результат: созданный отчёт, обработанный пакет или запись приложения.

Пример: таймер сработал вовремя, но программа не смогла прочитать файл настроек. Исправлять время запуска бесполезно — расписание уже выполнило свою часть. Другой случай: служба всё ещё работает, потому что предыдущая обработка затянулась. Это повод проверить длительность операции, а не запускать несколько копий вручную.

Сопоставьте время и окружение

Проверьте часовой пояс сервера и то, под каким пользователем выполняется задача. Ручной запуск в интерактивном терминале может получать другие переменные, рабочий каталог и права. Поэтому фраза «у меня команда работает» не подтверждает исправность служебного запуска.

В отчёте укажите имена timer и service, ожидаемое и фактическое время, результат службы и факт появления конечного результата. Повторный ручной запуск допустим только после оценки повторяемости операции: отправка писем или выгрузка заказов может создать дубли. Диагностика завершается тогда, когда понятно, сорвалось расписание или само выполнение.

Обсуждение 0

Делись опытом и задавай вопросы. Комментарии без ссылок появляются после проверки редактором.

Пока никто не написал. Начни обсуждение.