====== Cron ====== ---- ===== О Cron ===== Cron - Системная утилита, предназначенная для автоматического выполнения задач (скриптов или команд) в строго определенное время или через определенные промежутки времени. ===== Установка Cron ===== Установите Cron: sudo apt install cron Проверьте статус Cron: sudo systemctl status cron Вывод в терминале: ● cron.service - Regular background program processing daemon Loaded: loaded (/usr/lib/systemd/system/cron.service; enabled; preset: enabled) Active: active (running) since Thu 2026-10-22 19:52:07 +07; 1h 22min ago Docs: man:cron(8) Main PID: 810 (cron) Tasks: 1 (limit: 18768) Memory: 464.0K (peak: 2.3M) CPU: 14ms CGroup: /system.slice/cron.service └─810 /usr/sbin/cron -f -P окт 22 19:52:07 NEO-M136 systemd[1]: Started cron.service - Regular background program processing daemon. окт 22 19:52:07 NEO-M136 (cron)[810]: cron.service: Referenced but unset environment variable evaluates to an empty string: EXTRA_OPTS окт 22 19:52:07 NEO-M136 cron[810]: (CRON) INFO (pidfile fd = 3) окт 22 19:52:07 NEO-M136 cron[810]: (CRON) INFO (Running @reboot jobs) окт 22 20:17:01 NEO-M136 CRON[21141]: pam_unix(cron:session): session opened for user root(uid=0) by root(uid=0) окт 22 20:17:01 NEO-M136 CRON[21141]: pam_unix(cron:session): session closed for user root окт 22 20:30:01 NEO-M136 CRON[30078]: pam_unix(cron:session): session opened for user root(uid=0) by root(uid=0) окт 22 20:30:01 NEO-M136 CRON[30079]: (root) CMD ([ -x /etc/init.d/anacron ] && if [ ! -d /run/systemd/system ]; then /usr/sbin/invoke-rc.d anacron s> окт 22 20:30:01 NEO-M136 CRON[30078]: pam_unix(cron:session): session closed for user root lines 1-20/20 (END) Добавить Cron в автозагрузку: sudo systemctl enable cron Удалить Cron из автозагрузки: sudo systemctl disable cron Запуск Cron: sudo systemctl start cron Перезапуск Cron: sudo systemctl restart cron Остановить Cron: sudo systemctl stop cron ===== Задача Cron ===== * * * * * /путь/к/команде_или_скрипту │ │ │ │ │ │ │ │ │ └─── День недели (0–6) (0 — воскресенье) │ │ │ └───── Месяц (1–12) │ │ └─────── День месяца (1–31) │ └───────── Час (0–23) └─────────── Минута (0–59) ===== Специальные символы ===== * * - Любое значение (каждую минуту, каждый час и т.д.). * , - Список значений (например, 1,3,5 в поле минут — выполнение на 1, 3 и 5 минутах). * - - Диапазон (например, 1-5 в поле часов — каждый час с 1 до 5). * / - Шаг/интервал (например, */15 в поле минут — каждые 15 минут). ===== Примеры расписания Cron ===== ^ Время ^ Описание ^ | * * * * * | Каждую минуту | | 0 * * * * | В начале каждого часа | | 0 0 * * * | Каждый день в полночь | | */15 * * * * | Каждые 15 минут | | 0 0 * * * | Каждый день в полночь | | 0 9 * * 1-5 | В 9:00 утра, с понедельника по пятницу | | 30 18 * * 0 | Каждое воскресенье в 18:30 | | 0 12 1 * * | В полдень первого числа каждого месяца | | 15 3 1 * * | Каждый месяц первого числа в 3 часа ночи 15 минут | ===== Опции crontab ===== * **--help** - Показать справочную информацию по команде * **-e** - Редактирует текущий файл (открывает текстовый редактор) * **-l** - Показывает список всех запланированных задач * **-r** - Удаляет все текущие задачи пользователя * **-u** - Редактирует задачи другого пользователя (требуются права sudo) ===== Использование Cron ===== Редактирует текущий файл пользователя, используем опцию **-e**: crontab -e Добавить задачу: * * * * * /полный/путь/к/скрипту или команде [[https://crontab.guru/|Crontab.guru - The cron schedule expression generator]] Запускать задачу каждый час в нулевую минуту: 0 * * * * /полный/путь/к/скрипту или команде Запускать задачу каждый каждые 30 минут: 0/30 * * * * /полный/путь/к/скрипту или команде Запускать задачу каждый день в полночь: 0 0 * * * /полный/путь/к/скрипту или команде Запускать задачу 1-го числа каждого месяца в полночь: 0 0 1 * * /полный/путь/к/скрипту или команде Показать список всех запланированных задач, используем опцию **-l**: crontab -l Удалить все текущие задачи пользователя, используем опцию **-r**: crontab -r Редактировать задачи другого пользователя (требуются права sudo), используем опцию **-u**: crontab -u <Имя_пользователя> -e