systemd timers вместо cron: когда стоит перейти
Cron прост и привычен, но systemd timers дают логи, зависимости и более понятное управление задачами.
Cron живет десятилетиями и отлично подходит для простых задач. Но когда задача становится частью сервиса, systemd timers часто удобнее.
Чем cron хорош
- очень простой;
- есть почти везде;
- легко написать расписание;
- подходит для маленьких одноразовых задач.
Для публикации статей каждые 15 минут cron вполне нормален.
Где systemd timers удобнее
Если задача должна иметь:
- понятные логи через
journalctl; - зависимости от network;
- restart policy;
- отдельный user;
- контроль через
systemctl; - запуск пропущенной задачи после downtime.
Тогда timer выглядит аккуратнее.
Пример идеи
Есть service:
[Service]
Type=oneshot
ExecStart=/usr/bin/php /var/www/blog/admin/cron-publish.php
User=www-data
И timer, который запускает service по расписанию. После этого можно смотреть:
systemctl status blog-publish.timer
journalctl -u blog-publish.service
Вывод
Cron не устарел. Но если задача важная и хочется нормальной диагностики, systemd timer часто приятнее. Для маленького блога можно начать с cron, а перейти позже, когда появится боль.