Работа с cron в linux

Когда требуется автоматизация на сервере, без cron обойтись сложно. Конечно для начала требуется написать скрипт, который будет выполнять какие-то рутинные действия, а для того, чтобы он запускался регулярно, в определённое время и при этом сам собой, без вмешательства со стороны администратора сервера, — тут на помощь придёт знания о том, как настроить cron на сервере. По сути cron — это планировщик в виде системного сервиса, работающего на сервере в фоновом режиме и по настроенным командам в определённое время (раз в час, раз в день, неделю или месяц) запускает то, что указано в этих командах.



Существует несколько конфигурационных файлов cron, из которых он берет информацию о том когда и что нужно выполнять. Этот сервис открывает файл /etc/crontab, в котором указаны все нужные данные. В некоторых дистрибутивах linux там прописан запуск утилиты run-parts, которая запускает нужные скрипты из следующих папок:

  • /etc/cron.minutely - каждую минуту;
  • /etc/cron.hourly - каждый час;
  • /etc/cron.daily - каждый день;
  • /etc/cron.weekly - каждую неделю;
  • /etc/cron.monthly - каждый месяц.

В этих папках находятся скрипты (имя этих скриптов не должно содержать точки), которые нужно запускать с указанным интервалом. В файле crontab также прописан запуск команды anacron, которая работает так же как и cron, только предназначена для задач, которые нужно выполнять раз в заданный период времени, например, раз в день, неделю, месяц, год.

После перезагрузки (или включения после отключения) сервера, процесс cron запускается автоматически и, для того, чтобы отслеживать какие программы были им запущены, а какие ещё не отработали, дата выполнения задания последний раз записывается в файл /var/spool/anacron и anacron проверяет был ли запущен нужный процесс в нужное время, и если нет, то запускает его. Сервис cron больше рассчитан на выполнение задач в течение дня или с точно расписанным временем и датой.

Команда crontab -l

Команда crontab -l показывает задачи cron для суперпользователя.

Команда crontab -r

Команда crontab -r удаляет все существующие задачи суперпользователя.

Команда crontab -e

Команда crontab -e позволяет редактировать задачи, внесённые в список задач, а также удалять ненужные и дописывать новые.

Синтаксис записи crontab

Выполнив команду crontab -e, вы откроете на редактирование список имеющихся задач в cron в текстовом редакторе, используемым в вашей системе по умолчанию. При сохранении данного файла происходит перезапись задач в cron и задача удаляется, модифицируется или добавляется в список выполнения.

Формат записи в cron имеет в начале пять цифр. Если вместо цифры стоит *, то это нужно понимать как "каждая". Т.е. если нужно выполнять каждый день, то в позиции дней должна стоять *. Дальше это станет понятно на примерах.

После цифр идёт команда, которую нужно выполнить (обычно это скрипты с параметрами).

Итак, формат в общем виде выглядит так:

минута час день месяц день_недели /путь/к/исполняемой/команде с_парамертами_если_нужно

Например, если нужно выполнить какой-то скрипт по адресу /usr/local/service.sh

  • каждую минуту:
    • * * * * * /usr/local/service.sh
  • каждый час на 45-й минуте:
    • 45 * * * * /usr/local/service.sh
  • каждый день в полночь (в 0 часов 0 минут)
    • 0 0 * * * /usr/local/service.sh
  • каждый месяц 13-го числа (каждого месяца в 14:22)
    • 22 14 13 * * /usr/local/service.sh
  • каждую пятницу в час ночи
    • 0 1 * * 4 /usr/local/service.sh
  • Если нужно запускать с определёнными интервалами:
    • интервалы указываются через запятую (в примере ниже - ежедневно в 12:30 и в 12:44):
      • 30,44 12 * * * /usr/local/service.sh
    • или в виде дроби (в примере - каждые 15 минут):
      • */15 * * * * /usr/local/service.sh
  • Для некоторых часто используемых наборов есть переменные:
    • @reboot - при загрузке, только один раз;
    • @yearly, @annually - раз год;
    • @monthly - раз в месяц;
    • @weekly - раз в неделю;
    • @daily, @midnight - каждый день;
    • @hourly - каждый час, например:
      • @hourly /usr/local/service.sh

Логгирование выполнения задач cron

Лог того, как происходит выполнение задач в cron пишется в /var/log/cron или в syslog.

Посмотреть его можно так:

grep CRON /var/log/syslog

На первое время данной информации должно хватить для составления списка выполнения задач в cron.

Видео-инструкция «Запускаем в cron скрипт, написанный на PHP. Подготовка PHP скрипта к запуску в crontab»

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню