Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
SYSTEMD_TIMER_CONFIG Linux / DevOps

Настройка таймеров systemd (systemd.timer) и user-сессий вместо cron

Обновлено: 21.08.2026
  • Ограничения классического cron: отсутствие гранулярных зависимостей, журналирования в journalctl и гибкого контроля ресурсов (cgroups).
  • Необходимость выполнения периодических фоновых задач для непривилегированных пользователей без привилегий root.
  • Остановка фоновых user-сервисов после выхода пользователя из SSH-сессии.

1. Включение постоянных user-сессий (Linger Mode)

Разрешает запуск пользовательских таймеров и служб без активной SSH-сессии:

loginctl enable-linger deploy_user
loginctl show-user deploy_user | grep Linger

2. Создание исполнительного сервиса /etc/systemd/system/backup.service

[Unit]
Description=Production Database Backup
Wants=network-online.target
After=network-online.target

[Service]
Type=oneshot
User=deploy_user
ExecStart=/usr/local/bin/backup_script.sh
StandardOutput=journal
StandardError=journal

3. Создание управляющего таймера /etc/systemd/system/backup.timer

[Unit]
Description=Run Database Backup daily at 02:30
Requires=backup.service

[Timer]
OnCalendar=*-*-* 02:30:00
Persistent=true
RandomizedDelaySec=300

[Install]
WantedBy=timers.target

4. Активация и управление таймерами

systemctl daemon-reload
systemctl enable --now backup.timer

# Просмотр расписания всех активных таймеров в системе
systemctl list-timers --all
Практический опыт инженера: Параметр RandomizedDelaySec=300 распределяет запуск задач в пределах заданного интервала, предотвращая так называемый Thundering Herd эффект (одновременный всплеск I/O и CPU от десятков cron-скриптов в 00:00).

Частые вопросы (FAQ)

Что означает директива Persistent=true в systemd.timer?

Если сервер был выключен в момент запланированного старта таймера, systemd немедленно выполнит пропущенную задачу сразу после следующей загрузки системы.

Как проверить синтаксис расписания OnCalendar?

Используйте утилиту systemd-analyze: systemd-analyze calendar 'Mon,Fri *-*-* 04:00:00'.