Начало работы с таймерами systemd: современная альтернатива заданиям cron

Что такое таймеры systemd?

Таймер systemd — это современная и мощная замена традиционным заданиям cron, предназначенная для планирования и запуска сервисных юнитов systemd. По сравнению с классической системой cron он упрощает автоматизацию в Linux благодаря большей гибкости, ведению журналов и обработке зависимостей.

Почему стоит использовать таймеры systemd вместо cron?

Таймеры systemd имеют несколько преимуществ перед cron, что делает их предпочтительным выбором для автоматизации задач в средах Linux:

  • Единое управление: управляйте таймерами вместе с другими юнитами systemd (запуск, остановка, включение, отключение).
  • Улучшенное ведение журналов: используйте journalctl для подробного ведения журналов и мониторинга состояния.
  • Гибкое планирование: поддерживает как календарный синтаксис, так и монотонные (относительные) таймеры.
  • Обработка пропущенных событий: автоматически наверстывает пропущенные события после перезагрузки.

Быстрый пример: запуск скрипта каждый день в полночь

Вот пошаговое руководство по созданию таймера systemd, который запускает скрипт ежедневно в полночь:

1. Создайте сервисный юнит

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

Создайте файл /etc/systemd/system/daily-script.service:

[Unit]
Description=Run my daily script

[Service]
Type=oneshot
ExecStart=/usr/local/bin/myscript.sh

2. Создайте юнит таймера

Юнит таймера планирует, когда должен запускаться сервис.

Создайте файл /etc/systemd/system/daily-script.timer:

[Unit]
Description=Run my daily script every day at midnight

[Timer]
OnCalendar=*-*-* 00:00:00
# The format is: YYYY-MM-DD HH:MM:SS
# The above line schedules the task to run once per day at midnight.

Persistent=true

[Install]
WantedBy=timers.target

3. Включите и запустите таймер

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

sudo systemctl daemon-reload
sudo systemctl enable --now daily-script.timer

Как проверить состояние и журналы

После настройки таймера вы можете следить за его состоянием и журналами с помощью следующих команд:

  • Проверка активных таймеров:
systemctl list-timers
  • Просмотр сведений о таймере:
systemctl status daily-script.timer
  • Проверка журналов выполнения скрипта:
journalctl -u daily-script.service

Справочные материалы

  1. Официальная документация systemd:
    https://www.freedesktop.org/software/systemd/man/systemd.timer.html
    Это официальная документация по таймерам systemd с подробным описанием синтаксиса, параметров и примеров.
  2. Arch Wiki о таймерах systemd:
    https://wiki.archlinux.org/title/Systemd/Timers
    Руководство, поддерживаемое сообществом, с практическими примерами и советами по устранению неполадок.
  3. Документация Red Hat о таймерах systemd:
    https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/chap-managing_services_with_systemd#sect-Managing_Timers
    Подробное объяснение таймеров systemd для корпоративного использования.
  4. Справочная вики сообщества Ubuntu:
    https://help.ubuntu.com/community/systemd
    На этой странице представлен обзор systemd и информация о таймерах.

Итог

Таймеры systemd — надёжное и современное решение для автоматизации задач в Linux. По сравнению с заданиями cron они обеспечивают большую надёжность, контроль и интеграцию с systemd. Создав простой сервисный юнит и юнит таймера, вы можете автоматизировать такие задачи, как резервное копирование, синхронизация, очистка и многое другое. Независимо от того, управляете ли вы личным сервером или корпоративной инфраструктурой, таймеры systemd — незаменимый инструмент эффективной автоматизации в Linux.

Оставить комментарий