💀 Cron мертв. Да здравствуют Systemd Timers
Мы все привыкли писать crontab -e. Это просто, но убого: ❌ Если задача упала, вы узнаете об этом только если настроили почту. ❌ Логи надо перенаправлять вручную (>> /var/log/my.log 2>&1). ❌ Нельзя сказать: «Запусти бэкап только ПОСЛЕ того, как загрузилась база данных».
В 2025 году Архитектор использует Systemd Timers.
Как это сделать:
Создаем сервис (/etc/systemd/system/backup.service): Описываем, что делать.
Создаем таймер (/etc/systemd/system/backup.timer): Описываем, когда делать.
Активируем: systemctl enable --now backup.timer
Бонусы:
* systemctl list-timers — показывает, когда был последний запуск и когда следующий.
* journalctl -u backup.service — все логи из коробки.
* Можно добавить OnFailure=alert.service, чтобы телеграфировать об ошибках.
#linux #systemd #cron #automation #modern #bestpractice
Мы все привыкли писать crontab -e. Это просто, но убого: ❌ Если задача упала, вы узнаете об этом только если настроили почту. ❌ Логи надо перенаправлять вручную (>> /var/log/my.log 2>&1). ❌ Нельзя сказать: «Запусти бэкап только ПОСЛЕ того, как загрузилась база данных».
В 2025 году Архитектор использует Systemd Timers.
Как это сделать:
Создаем сервис (/etc/systemd/system/backup.service): Описываем, что делать.
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
Создаем таймер (/etc/systemd/system/backup.timer): Описываем, когда делать.
[Timer]
OnCalendar=*-*-* 03:00:00 # Каждый день в 3 ночи
Persistent=true # Если сервер был выключен, запустить сразу при включении!
[Install]
WantedBy=timers.target
Активируем: systemctl enable --now backup.timer
Бонусы:
* systemctl list-timers — показывает, когда был последний запуск и когда следующий.
* journalctl -u backup.service — все логи из коробки.
* Можно добавить OnFailure=alert.service, чтобы телеграфировать об ошибках.
#linux #systemd #cron #automation #modern #bestpractice