cron — фоновая служба Unix/Linux, читающая `/etc/crontab` и `~/.crontab` пользователей и запускающая команды в указанные моменты. Синтаксис: 5 полей + команда: `минута час день_месяца месяц день_недели команда`. Пример `0 3 * * * /usr/local/bin/backup.sh` — каждый день в 03:00 запуск backup.sh.
Спец-нотация: `*` — любое, `*/5` — каждые 5, `1,15,30` — список, `1-5` — диапазон, `@daily` = `0 0 * * *`, `@reboot` — при загрузке. Утилита crontab.guru — визуально расшифровывает.
Ключевые команды: `crontab -e` (правка своего), `crontab -l` (просмотр), `crontab -r` (удалить — опасно, `-r` без подтверждения), `sudo systemctl status cron` (статус демона на Debian, `crond` на RHEL). Логи — `/var/log/syslog | grep CRON` или `journalctl -u cron`.
Грабли: (1) не выполняется — почти всегда `$PATH` пуст в cron-среде, использовать абсолютные пути. (2) тихая ошибка — stderr не логируется, добавьте `>> /var/log/backup.log 2>&1`. (3) пересечение задач — если `backup.sh` идёт > 24 ч, следующий cron запустит вторую копию → используйте `flock`. (4) timezone — cron работает в системном TZ, не UTC — check `date` перед плансированием.
Современная альтернатива — systemd timers (точнее, лучше логи через journald, зависимости между units). cron живёт по инерции + простой.