Если у тебя есть VPS и ты всё ещё запускаешь бэкап вручную или не чистишь временные файлы, пока диск не заполнится — добро пожаловать в автоматизацию.
Когда-то я тоже начинала с классического
cronsystemd.timer.timercrontab🧾 Что такое cron и зачем он нужен
croncrontabПример: запуск скрипта каждые 5 минут:
*/5 * * * * /home/user/cleanup.sh
Плюсы:
- работает везде;
- мгновенно понятно, что и когда запускается;
- можно отредактировать черези забыть.
crontab -e
Минусы:
- нет логов по умолчанию (если не перенаправишь в файл — ты ничего не узнаешь);
- нет зависимостей — не знаешь, был ли интернет, была ли другая служба поднята;
- сложно отлаживать, если что-то пошло не так.
🚀 Что такое systemd.timer и как с ним жить
Если у тебя современная Ubuntu или Debian,
systemdПо сути,
systemd.timerХочешь пример?
# /etc/systemd/system/backup.service [Unit] Description=Nightly backup [Service] Type=oneshot ExecStart=/home/user/backup.sh
# /etc/systemd/system/backup.timer [Unit] Description=Run backup daily [Timer] OnCalendar=*-*-* 03:00:00 Persistent=true [Install] WantedBy=timers.target
Запуск:
systemctl daemon-reexec systemctl daemon-reload systemctl enable --now backup.timer
Теперь скрипт будет выполняться каждый день в 3 ночи.
🧩 В чём плюсы systemd.timer
- Живые логи: можно посмотретьи узнать, что реально происходило.
journalctl -u backup.service - Гибкое расписание:— запускай каждый понедельник.
OnCalendar=Mon *-*-* 07:00 - Можно запустить вручную (через).
systemctl start your.service - Автоматический перезапуск, если система была выключена во время плановой задачи (если).
Persistent=true
🕵️ Где смотреть активные таймеры?
Всё просто:
systemctl list-timers
или
systemctl list-timers --all
Увидишь список: какой
.timer🆚 Cron vs systemd — когда что использовать
| Что нужно сделать | Что выбрать |
|---|---|
| Быстро раз в 5 минут вызвать скрипт | cron (простой случай) |
| Хочешь логов и контроля | systemd.timer |
| Зависит от других служб (nginx, mysql) | systemd.timer |
| Нужно поведение «после перезагрузки» | systemd.timer с Persistent |
| Запуск от конкретного пользователя | systemd user timer |
🔍 Как создать user timer (без sudo)
systemctl --user enable --now myscript.timer
Но не забудь —
systemd.bashrcexport XDG_RUNTIME_DIR=/run/user/$(id -u)
🐛 Где я спотыкалась
- не добавила— таймер не сработал после перезагрузки;
Persistent=true - забылав
ExecStart=— таймер работал, а команда — нет;.service - названияи
.serviceне совпадали — и таймер запускал «ничего»..timer
📝 Итого
Cron хорош, если тебе надо что-то простое и быстрое.
Но как только ты хочешь стабильности, логов и предсказуемости —
systemd.timerСейчас у меня на каждом VPS минимум 3 таймера: бэкап, очистка, обновления. Все на
systemdCron — остался только для привычных вещей вроде
letsencryptЗа стабильность — с бонусом
Долгосрочные клиенты получают больше: +1 месяц в подарок по промокоду
Месяц в подарок
COPIED
NEWCOMM COPIED