Rocky Linux Rocky Linux

Rocky Linux: задание таймера не выполняется после выхода из сна

  • Обновлено
  • Чтение ≈ 4 минуты
  • Нужны права администратора

Краткий ответ

Таймер не запускает работу во время сна или после пробуждения, хотя вручную служба исполняется. Нужно различать запуск по календарю, монотонные интервалы и аппаратную поддержку пробуждения.

В этой статье
  1. Когда возникает проблема и к каким системам относится
  2. Основные причины: как отличить одну от другой
  3. Пошаговая диагностика и устранение неисправности
  4. Как убедиться, что неисправность устранена
  5. Если предложенный способ не сработал

#Когда возникает проблема и к каким системам относится

Таймер не запускает работу во время сна или после пробуждения, хотя вручную служба исполняется. Нужно различать запуск по календарю, монотонные интервалы и аппаратную поддержку пробуждения. Rocky Linux с systemd-таймерами на компьютере, выходящем из сна; применение Persistent= относится к OnCalendar, а не ко всем разновидностям таймеров.

#Основные причины: как отличить одну от другой

Возможная причинаКак узнатьЧто делать
Используется монотонный интервалВремя сна не учитывается ожидаемым образомВ unit OnUnitActiveSec и WakeSystem=noУточнить семантику интервала вместо копирования Persistent
Пропущен календарный запускВо время сна наступило OnCalendar, but Persistent не настроен или были другие условияsystemctl list-timers показывает иной NEXT/LASTПодобрать условия догоняющего запуска
Служба запускается, но падаетTimer elapses, service unit failsв журнале .service ошибка исполненияРазбирать службу отдельно от расписания

#Пошаговая диагностика и устранение неисправности

  1. Шаг 1. Найдите настоящее имя таймера и его службуВ терминале просмотрите список таймеров, включая неактивные. Укажите точно имя с суффиксом .timer и не путайте его с .service. NEXT и LAST указывают план и последний запуск, но не доказывают успех команды.
  2. Терминал Rocky Linux; административные права не обязательны
    Linux · Терминал (Bash)Команда
    Терминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
    systemctl list-timers --all
    TIMER="имя.timer"
    systemctl status "$TIMER" --no-pager
  1. Шаг 2. Проверьте расписание и тип таймераПрочитайте OnCalendar, OnBootSec, OnUnitActiveSec, Persistent, WakeSystem и Unit. Для Persistent важен OnCalendar: это не универсальное повторение всех пропущенных монотонных запусков.
  2. Терминал Rocky Linux; административные права не обязательны
    Linux · Терминал (Bash)Команда
    Терминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
    TIMER="имя.timer"
    systemctl cat "$TIMER"
    systemctl show "$TIMER" -p TimersCalendar -p TimersMonotonic -p NextElapseUSecRealtime -p NextElapseUSecMonotonic
  1. Шаг 3. Убедитесь, что таймер включён и что запускалась службаactive у таймера означает его работу, а не успешную задачу. Для обычного файла имя службы можно получить заменой суффикса; если в unit указан Unit=, используйте именно его.
  2. Терминал Rocky Linux; административные права не обязательны
    Linux · Терминал (Bash)Команда
    Терминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
    TIMER="имя.timer"
    SERVICE="имя.service"
    systemctl is-enabled "$TIMER"
    systemctl status "$SERVICE" --no-pager
  1. Шаг 4. Найдите момент сна и событие запускаВ журнале ищите время входа в suspend/resume и срабатывания таймера. Если событие было во сне, сравните его с LAST и фактическим запуском service. Пустая запись LAST для нового unit сама по себе не ошибка.
  2. Терминал Rocky Linux; административные права не обязательны
    Linux · Терминал (Bash)Команда
    Терминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
    journalctl -b --no-pager | grep -Ei "suspend|resume|sleep" | tail -35
    journalctl -b -u "имя.timer" -u "имя.service" --no-pager -n 70
  1. Шаг 5. Согласуйте поведение пропущенного календарного заданияЕсли требуется один отложенный запуск после неактивности таймера, проверьте возможность Persistent=yes для OnCalendar. Для периодических задач бизнес-логика должна сама обрабатывать очередь: systemd не повторяет каждое пропущенное срабатывание. Перед изменением сохраните unit, правьте отдельный drop-in через systemctl edit.
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Терминал Rocky Linux; нужны административные права. Меняет настройки/состояние службы: сначала копия и возможность отката.
    sudo systemctl edit имя.timer

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

  1. Шаг 6. Не пытайтесь включать пробуждение без аппаратной проверкиWakeSystem=true может будить машину только при соответствующей поддержке и правах, а для пользовательских таймеров обычно недоступен. На виртуальном сервере сон вообще может отсутствовать. Сначала проверьте наличие механизма, затем согласуйте политику питания устройства.
  2. Терминал Rocky Linux; административные права не обязательны
    Linux · Терминал (Bash)Команда
    Терминал Rocky Linux; административные права не обязательны. Диагностика или адресная проверка; выполните только при соответствии условиям шага.
    cat /sys/power/state
    cat /sys/power/mem_sleep 2>/dev/null || true
  1. Шаг 7. Примените настройки и проверьте следующий запускПосле сохранения правильного drop-in перечитайте конфигурацию и перезапустите только нужный таймер, в согласованное время. Проверьте, что NEXT вычислен, а LAST меняется при реальном выполнении.
  2. Терминал Rocky Linux; нужны административные права
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Терминал Rocky Linux; нужны административные права. Меняет настройки/состояние службы: сначала копия и возможность отката.
    sudo systemctl daemon-reload
    sudo systemctl restart имя.timer
    systemctl list-timers --all | grep "имя.timer"

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

#Как убедиться, что неисправность устранена

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

#Если предложенный способ не сработал

Если timer срабатывает, но действие не произошло, анализируйте связанную service и её права. Если таймер вообще не срабатывает, проверьте системные часы, задержку RandomizedDelaySec и возможность сна.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.