Планировщик Cron в Linux: настройка автозапуска скриптов (crontab -e)
Что такое Cron и зачем он нужен?
Cron — это встроенный в Linux планировщик задач, выполняющий команды и скрипты в фоновом режиме по строго заданному расписанию (каждую минуту, каждый час, в полночь или по понедельникам).
Синтаксис Cron и редактирование заданий
Откройте таблицу задач текущего пользователя:
crontab -e(При первом открытии выберите редактор Nano, нажав цифру 1).
Схема 5 звездочек:
* * * * * /путь/к/команде
│ │ │ │ │
│ │ │ │ └── День недели (0 - 7) (0 и 7 = Воскресенье)
│ │ │ └────── Месяц (1 - 12)
│ │ └──────── День месяца (1 - 31)
│ └────────── Час (0 - 23)
└──────────── Минута (0 - 59)Готовые популярные примеры:
# Запуск скрипта бэкапа каждую ночь в 03:00:
0 3 * * * /bin/bash /home/ubuntu/backup.sh
# Запуск очистки кэша каждые 15 минут:
*/15 * * * * /usr/bin/php /var/www/site/artisan cache:clear
# Запуск проверки каждый понедельник в 08:30 утра:
30 8 * * 1 /home/ubuntu/check_status.sh
# Запуск задачи один раз при старте сервера:
@reboot /usr/bin/python3 /home/ubuntu/startup.pyГлавная ошибка новичков: В cron отсутствует стандартное пользовательское окружение PATH. Всегда пишите полные пути к утилитам (/usr/bin/python3, /bin/bash) и перенаправляйте логи выполнения: >> /var/log/cron_job.log 2>&1.
Частые вопросы (FAQ)
Как посмотреть текущий список задач без открытия редактора?
Выполните команду crontab -l.
Как запускать крон-задачи от имени администратора root?
Откройте крон суперпользователя командой sudo crontab -e.
Где посмотреть лог срабатывания задач cron?
В системном журнале: sudo grep CRON /var/log/syslog или journalctl -u cron.
Что означает конструкция > /dev/null 2>&1?
Она полностью глушит весь вывод команды (и успешные сообщения, и ошибки), чтобы cron не пытался отправлять локальные системные письма.