Systemd timers - это более современный и гибкий способ планирования задач в linux, особенно на серверах с systemd.🌟 Почему systemd timers лучше cron?
📍 Логирование по умолчанию - systemd записывает stdout/stderr задачи в journal, не нужно вручную перенаправлять вывод
📍 Зависимости и условия запуска - можно привязать таймер к другим сервисам, целям (targets) и условиям
📍 Точный контроль времени и интервалов - есть OnCalendar, OnBootSec, OnUnitActiveSec и другие
📍 Простой мониторинг - можно посмотреть статус задачи: когда запускалась, сколько длилась, когда запустится снова
📍 Юзер-таймеры - можно создавать таймеры без root-доступа для отдельных пользователей
▪️ Как настроить systemd timer. Создаем два юнита: *.service (что запускать) и *.timer (когда запускать).
Пример: бэкап в /var/backups каждую ночь в 3:00
vi /etc/systemd/system/backup.service
[Unit]
Description=Nightly backup
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
vi /etc/systemd/system/backup.timer
[Unit]
Description=Run backup script daily at 3AM
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.target
Активируем:
sudo systemctl daemon-reexec
sudo systemctl enable --now backup.timer
▪️ Проверить статус:
systemctl list-timers
systemctl status backup.timer
journalctl -u backup.service
▪️ Другие примеры таймеров. Через 5 минут после загрузки:
[Timer]
OnBootSec=5min
Каждые 15 минут:
[Timer]
OnUnitActiveSec=15min
Каждый понедельник в 6 утра:
[Timer]
OnCalendar=Mon *-*-* 06:00:00
▪️ Полезное:
📍 Устанавливайте Persistent=true, чтобы таймер отработал, даже если система была выключена в момент запуска
📍 Используйте systemctl cat для просмотра активных юнитов
📍 Для задач от пользователя используйте ~/.config/systemd/user/
#systemd #cron
🧑💻 NetworkAdmin