Я ощущаю себя пещерным человеком.
Мне уже много лет, и есть вещи, к которым я привык настолько, что воспринимаю их как константу. Они всегда на своих местах. Они всегда работают. Я никогда не задумываюсь, есть ли что-то еще — потому что зачем, если и так все хорошо?
Когда мне нужно запускать что-то регулярно, с заданной периодичностью — я использую cron. Я не знаю, сколько лет этой утилите. Мне кажется, она была всегда. Открыл crontab -e, написал расписание и забыл. А оно работает.
Но сегодня, решая очередную задачу с периодическим запуском, я с удивлением узнал, что альтернатива существует. Причем довольно давно.
Systemd timer — это механизм планирования задач, встроенный в systemd. Он решает те же задачи, что и cron, но с бо́льшей точностью и бо́льшим количеством опций:
Гранулярность до секунд. У cron минимальный интервал — одна минута. У systemd timer такого ограничения нет.
Защита от дублирования. Если предыдущий запуск еще не завершился — новый не запустится. Cron этого не контролирует: если скрипт работает дольше интервала, запустится второй экземпляр поверх первого.
Логирование через journalctl. Все запуски, выводы, ошибки — в одном месте. Не нужно вручную перенаправлять stdout в файл.
RandomizedDelaySec. Случайное смещение времени запуска. Задача стартует не ровно по расписанию, а в случайный момент внутри заданного окна. Это усложняет выявление паттерна по времени — полезно, когда предсказуемость запуска нежелательна.
Зависимости. Можно указать, что задача должна запускаться только после поднятия сети, после запуска другого сервиса, после монтирования диска. Cron просто стреляет по расписанию, не глядя на состояние системы (или надо лопатить свои костыли).
Persistent. Если система была выключена в момент запланированного пуска — задача выполнится сразу после загрузки. Cron же пропущенные запуски просто теряет.
Совсем недавно мне нужно было настроить автоматическую ротацию случайно генерируемых gRPC-путей между нодами. Для этого можно было бы использовать cron. Но… Наверное, пора выходить из пещеры.
Комментарии (16)

Xelld
20.04.2026 18:42А следующими открытиями будут resolved, networkd и mounts? :)

v0rdych
20.04.2026 18:42Mounts изрядно странный в systemd. Зачем было жестко увязывать имя юнита с путем монтирования - лютая загадка.

Xelld
20.04.2026 18:42Полагаю, что для наглядности и какой-то костыльной защиты от управления одним устройством несколькими разными mounts.
Но контролировать условия и зависимости в systemd все же намного удобнее, чем в fstab.

ss-pol
20.04.2026 18:42зато cron есть везде, а systemd - нет

rSedoy
20.04.2026 18:42Так себе утверждение, чтобы его не было, надо очень сильно этого захотеть, а аргументации, почему нет, часто уровня фанатизма.

ss-pol
20.04.2026 18:42
rSedoy
20.04.2026 18:42а реальный процент и не притянутых сюда Android и других чем-то подобных (не удивлюсь, что в этом списке окажутся даже и без cron), а условно "серверных"?

ss-pol
20.04.2026 18:42Почему только серверных, на десктопе крон не нужен что-ли?
Я мало чем пользовался, но вот один из первых в списке Alpine Linux - часто используется в контейнерах на серверах потому что он компактный и требует мало памяти. Потом Devuan - тоже вполне для сервера подходит. OpenWrt - чисто серверный, для роутеров. Это из тех, с которыми знаком не понаслышке.
А так там довольно много дистрибутивов, которые "на слуху": CalyxOS Calculate Linux GNU Guix
rSedoy
20.04.2026 18:42так какой их процент? В контейнерах обычно не cron используют, а что-то внешнее. Ладно, "серверных" неудачное определение, а то чтобы сюда и OpenWrt сразу притянули, пусть будет конкретная и самая большая часть - VPS, много там Devuan и прочих без systemd?

glebliutsko
20.04.2026 18:42У systemd только одна проблема.
В cron расписание настраивается одной строчкой, которую я на изусть напишу. В systemd нужно создать 2 файла по 5-10 строк, которые я наизусть не напишу. Постоянно либо в гугл иду или в ChatGPT
Из плюсов еще есть возможность настроить изоляцию скрипту. Получится недо-контейнер, но зато без docker

Xelld
20.04.2026 18:42Сам systemd прекрасен (и ужасен) своей гибкостью и богатым функционалом. За это приходится платить :)

13werwolf13
20.04.2026 18:42ну вот не надо, если у вас задачи в планировщике сложнее чем `bash /opt/script.sh` и включают в себя набор переменных, зависимость от работающего парралельно софта, а так же требуют ограничения по возможностям родить такое для cron будет написанием куда более чудовишьного скрипта чем лаконичный ini файл для systemd timers.
legendasofizma
А ещё оказывается systemd умеет с /dev/watchdog работать из коробки, делая ненужными всякие apt install watchdog и прочее такое.