Таймер сработал, а служба не найдена
Таймер по умолчанию запускает службу с тем же именем и расширением .service. Если файлы названы по-разному, а Unit= не задан, срабатывание приводит к ошибке «Unit not found» — таймер работает, дела не делается.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Имена таймера и службы не совпадают
Таймер
backup-nightly.timerищетbackup-nightly.service. Если служба называетсяbackup.service, связи нет. -
В
Unit=опечатка или нет расширенияБез расширения systemd достраивает
.service, но опечатка в имени приводит к поиску несуществующего unit. -
Служба удалена, а таймер остался
После удаления пакета или переименования службы таймер продолжает срабатывать в пустоту.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Точно показывает, какую службу таймер будет запускать.
systemctl show myapp.timer -p UnitОшибки срабатывания видны именно в журнале таймера, а не службы.
journalctl -u myapp.timer -n 20 --no-pagerВсе связанные файлы: сразу видно расхождение имён.
systemctl list-unit-files "*myapp*"Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Таймер
backup-nightly.timerищетbackup-nightly.service. Если служба называетсяbackup.service, связи нет.
- Как проверить
-
Посмотрите, что таймер собирается запускать.
systemctl show myapp.timer -p Unit systemctl list-timers --all --no-pager | grep -i myapp
- Как исправить
-
Либо переименуйте файлы к общему имени, либо укажите службу явно.
[Timer] Unit=backup.service
Unit= опечатка или нет расширения- Почему происходит
- Без расширения systemd достраивает
.service, но опечатка в имени приводит к поиску несуществующего unit.
- Как проверить
-
Сверьте имя с фактическим файлом.
systemctl show myapp.timer -p Unit systemctl list-unit-files "*backup*"
- Как исправить
- Исправьте имя на точное, с расширением, и перечитайте конфигурацию.
- Почему происходит
- После удаления пакета или переименования службы таймер продолжает срабатывать в пустоту.
- Как проверить
-
Проверьте наличие службы.
systemctl cat backup.service 2>&1 | head -3
- Как исправить
-
Удалите ненужный таймер целиком:
systemctl disable --now myapp.timerи уберите файл.
Пример вывода
Таймер ищет службу, которой нет. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
systemd[1]: backup-nightly.timer: Triggering OnCalendar=daily
systemd[1]: Failed to queue unit startup job: Unit backup-nightly.service not found.
systemd[1]: backup-nightly.timer: Failed to queue unit startup job: Unit backup-nightly.service not found.
Связанные ошибки
- Таймер активен, но не срабатывает Таймер systemd в состоянии active, но служба не запускается. Разбор: нет условия срабатывания, таймер не включён, ошибка в OnCalendar.
- Unit … not found: unit-файл не найден Сообщение Unit not found при запуске службы: файла нет, не выполнен daemon-reload, опечатка в имени или не указано расширение.
- Таймер не работает после перезагрузки Таймер работал, пока его запускали вручную, но после перезагрузки не активен: не выполнено включение или нет WantedBy=timers.target.
- Таймер и служба названы по-разному: таймер запускает не то Таймер срабатывает, а нужная служба не запускается: имя цели выводится из имени таймера, если не задано явно.
- Apache: Invalid command — не включён модуль Apache не запускается: директива требует модуль, который не подключён. Как найти нужный модуль и включить.
- Apache: правила .htaccess не действуют Файл .htaccess игнорируется: запрещён параметром AllowOverride, нет нужного модуля, файл не читается.
- Configuration file is marked world-inaccessible Предупреждение о правах на unit-файл: служба работает, но файл недоступен для чтения другим.
- Docker: unable to configure the Docker daemon with file daemon.json Демон Docker не запускается из-за ошибки в /etc/docker/daemon.json: неверный JSON или неизвестный ключ.
Источники
-
systemd.timer(5)
Параметр Unit= и правило имени по умолчанию. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено таймером с именем, не совпадающим с именем службы.