Что такое таймеры 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
Справочные материалы
- Официальная документация systemd:
https://www.freedesktop.org/software/systemd/man/systemd.timer.html
Это официальная документация по таймерам systemd с подробным описанием синтаксиса, параметров и примеров. - Arch Wiki о таймерах systemd:
https://wiki.archlinux.org/title/Systemd/Timers
Руководство, поддерживаемое сообществом, с практическими примерами и советами по устранению неполадок. - Документация 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 для корпоративного использования. - Справочная вики сообщества Ubuntu:
https://help.ubuntu.com/community/systemd
На этой странице представлен обзор systemd и информация о таймерах.
Итог
Таймеры systemd — надёжное и современное решение для автоматизации задач в Linux. По сравнению с заданиями cron они обеспечивают большую надёжность, контроль и интеграцию с systemd. Создав простой сервисный юнит и юнит таймера, вы можете автоматизировать такие задачи, как резервное копирование, синхронизация, очистка и многое другое. Независимо от того, управляете ли вы личным сервером или корпоративной инфраструктурой, таймеры systemd — незаменимый инструмент эффективной автоматизации в Linux.