Меню Рубрики

Установка и настройка cron ubuntu

Настройка Cron

Системным администраторам, да и обычным пользователям часто приходится автоматизировать различные задачи по обслуживанию и работе с Linux с помощью скриптов. Это очень удобно, вы просто запускаете скрипт, и он делает все что необходимо без вашего вмешательства. Следующий шаг в этом пути — настроить автоматически запуск нужного скрипта в нужное время.

Именно для этих задач в Linux используется системный сервис cron. Это планировщик, который позволяет выполнять нужные вам скрипты раз в час, раз в день, неделю или месяц, а также в любое заданное вами время или через любой интервал. Программа часто используется даже другими службами операционной системы. В этой статье мы рассмотрим как выполняется настройка Cron и разберем основные часто используемые примеры.

Как работает Cron?

Фактически, Cron — это сервис, как и большинство других сервисов Linux, он запускается при старте системы и работает в фоновом режиме. Его основная задача выполнять нужные процессы в нужное время. Существует несколько конфигурационных файлов, из которых он берет информацию о том что и когда нужно выполнять. Сервис открывает файл /etc/crontab, в котором указаны все нужные данные. Часто, в современных дистрибутивах там прописан запуск утилиты run-parts, которая запускает нужные скрипты из следующих папок:

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

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

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

Настройка Cron

Для настройки времени, даты и интервала когда нужно выполнять задание используется специальный синтаксис файла cron и специальная команда. Конечно, вы всегда можете отредактировать файл /etc/crontab, но этого делать не рекомендуется. Вместо этого, есть команда crontab:

Ее всегда желательно выполнять с опцией -e, тогда для редактирования правил будет использован ваш текстовый редактор по умолчанию. Команда открывает вам временный файл, в котором уже представлены все текущие правила cron и вы можете добавить новые. После завершения работы команды cron файл будет обработан и все правила будут добавлены в /var/spool/cron/crontabs/имя_пользователя причем добавленные процессы будут запускаться именно от того пользователя, от которого вы их добавляли.

Поэтому тут нужно быть аккуратным, и если вам нужно выполнять скрипты от рута, то и crontab нужно выполнить от рута, а не от пользователя. Это часто становиться причиной проблем.

Синтаксис crontab

Как я уже говорил, время задается особым синтаксисом, давайте рассмотрим синтаксис настройки одной задачи cron:

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

Нужно сказать, что обязательно нужно писать полный путь к команде, потому что для команд, запускаемых от имени cron переменная среды PATH будет отличаться, и сервис просто не сможет найти вашу команду. Это вторая самая распространенная причина проблем с Cron. Дата и время указываются с помощью цифр или символа ‘*’. Этот символ означает, что нужно выполнять каждый раз, если в первом поле — то каждую минуту и так далее. Ну а теперь перейдем к примерам.

Примеры настройки cron

Сначала можно посмотреть задачи cron для суперпользователя, для этого можно воспользоваться опцией -l:

Вы можете удалить все существующие задачи командой -r:

Давайте предположим, что нам нужно запускать от имени суперпользователя наш скрипт по адресу /usr/local/bin/serve. Какой-нибудь обслуживающий скрипт. Самый простой пример — запускать его каждую минуту:

Далее, усложним, будем запускать каждый час, в нулевую минуту:

Запускаем в нулевую минуту нулевого часа, каждый день, это в 12 ночи:

Если идти так дальше, то можно запускать в первый день каждого месяца:

Можно в любой день, например, 15 числа:

0 0 15 * * /usr/local/bin/serve

В первый день недели первого месяца года, 0 часов 0 минут:

0 0 * 1 0 /usr/local/bin/serve

Или в нулевой день недели каждого месяца:

Вы можете выбрать любую минуту, час и день недели, например, 15.30 во вторник:

30 15 * * 2 /usr/local/bin/serve

Понедельник считается первым днем, воскресенье — это седьмой или нулевой день. Еще можно писать сокращенное название дня недели, например sun — воскресенье:

30 15 * * sun /usr/local/bin/serve

Для того чтобы указать определенный интервал нужно использовать символ «-«, например, каждый час, с семи утра до семи вечера:

0 7-19 * * * /usr/local/bin/serve

Если нужно запустить команду несколько раз, можно использовать разделитель «,». Например, запустим скрипт в 5 и 35 минут пятого (16:05 и 16:35), каждый день:

Читайте также:  Установка автостекол в уссурийске

5,35 16 * * * /usr/local/bin/serve

Вы можете захотеть не указывать отдельно время, а просто указать интервал, с которым нужно запускать скрипт, например, раз в 10 минут. Для этого используется разделитель косая черта — «/»:

Кроме того, для некоторых часто используемых наборов были придуманы переменные, вот они:

  • @reboot — при загрузке, только один раз;
  • @yearly, @annually — раз год;
  • @monthly — раз в месяц;
  • @weekly — раз в неделю;
  • @daily, @midnight — каждый день;
  • @hourly — каждый час.

Например, вот так просто будет выглядеть команда запуска скрипта раз в час:

Если же вы собрались добавить скрипт в одну из папок, то, как я уже говорил, нужно чтобы его имя было без точек и у него были права на выполнение:

sudo vi /etc/corn.daily/basckup

Скрипт должен выглядеть подобным образом. Теперь вы знаете как настроить cron, осталось проверить как все работает.

Отладка работы

После того как вы настроили правила, еще хотелось бы проверить работают ли они. Для этого ждем того времени, когда скрипт уже должен быть выполнен и смотрим лог cron. Иногда он находится в /var/log/cron, а иногда пишется в syslog. Например, у меня в crontab есть такая строка:

Она должна выполняться в 19.40 каждый день, теперь смотрим лог:

И видим что в нашем логе она действительно есть и выполняется целиком успешно. Если бы были какие-либо ошибки, то тут же было бы выведено сообщение.

Если нужно проверить скрипт, который находится в одной из специализированных папок, то тут еще проще, просто запустите run-paths, передав ей в параметр нужную папку или даже сам скрипт:

sudo run-paths /etc/cron.daily/

Дальше вы увидите весь вывод, включая вывод скрипта и сможете быстро понять в чем проблема.

Выводы

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

источник

Настройка планировщика Cron в Linux

В инструкции описано использование планировщика Cron с помощью утилиты Crontab в Linux.

Виртуальный сервер на базе Linux

Что это такое?

Cron — системный демон, используемый для выполнения задач (в фоновом режиме) в указанное время.

Crontab — команда, которая используется, для управления планировщиком Cron. Команда crontab создает файл crontab, содержащий команды и инструкции для запуска демона cron.

Конфигурационные файлы

Следующие файлы ограничивают доступ к планировщику (по умолчанию они не существуют):

  • /etc/cron.allow — если существует, пользователи указанные в этом файле имеют возможность запуска заданий планировщика;
  • /etc/cron.deny — если существует, пользователи указанные в этом файле НЕ имеют возможность запуска заданий планировщика.

Если cron.allow существует, только юзерам, перечисленным в нем, разрешено использовать cron, при этом файл cron.deny игнорируется. Если cron.allow не существует, юзерам, указанным в cron.deny, не разрешается использовать планировщик cron.

Формат записей в обоих файлах — одно имя пользователя в каждой строке. Пробелы не разрешены.

Файлы контроля доступа считываются каждый раз, когда пользователь пытается добавить или удалить задачу cron.

Параметры команды Crontab

crontab -e Редактирование или создание файла расписания для текущего пользователя
crontab -l Вывод содержимого расписания текущего пользователя
crontab -r Удаление файла расписания текущего пользователя
crontab -u user Работа с расписаниями конкретных пользователей. Доступно только суперпользователю minute(s) hour(s) day(s) month(s) weekday(s) command(s)

Поля разделяются пробелами или знаками табуляции. Первые пять представляют собой числовые значения, а шестое — это команда, которая будет выполняться. В следующей таблице кратко описывается каждое из полей:

Поле Диапазон значений Описание
minute 0-59 Минута запуска команды
hour 0-23 Час запуска
day 1-31 Число (день) запуска
month 1-12 Месяц запуска
weekday 0 — 6 День недели запуска (воскресенье = 0, понедельник = 1, вторник = 2 и т.д.)
command Последовательность команд для выполнения. Это могут быть команды, исполняемые файлы (например, скрипты) или комбинации файлов.

Примечание: значение первых пяти полей может быть либо * (звездочкой), что означает все допустимые значения, либо списком элементов, разделенных запятыми. Элемент является либо числовым, либо диапазоном чисел, обозначенным двумя значениями, разделенными тире (например, 10-12).

Примеры использования

Запуск скрипта каждый понедельник в 9:00 и 18:00 часов:

0 9,18 * * 1 /home/ivan/script.sh

Запуск скрипта каждый день в 0:30 и 12:30:

Запуск команды каждый месяц 1 числа в 12:00:

Запуск скрипта в полночь с понедельника по пятницу:

источник

Как использовать задачи в cron для автоматизации на Ubuntu 14.04

Главное меню » Операционная система Ubuntu » Как использовать задачи в cron для автоматизации на Ubuntu 14.04

Чаще всего они используются для автоматизации деятельности по администрированию системы и техническое обслуживание. Как и рассылка уведомления каждый день об успешном завершении запланированных резервных копий или очистки каталога /tmp/ . Есть много других ситуаций, когда веб – приложение требует периодически запускать определенные задачи.

Итак, в этой статье мы будем направлять вас о своем рабочем механизме и показать, как легко вы можете планировать свои задачи с помощью заданий Cron. “Cron” сам по себе это демон, который работает в фоновом режиме, а график различных задач находится в конфигурационном файле под названием “Crontab“, где все задачи и сроки планируется.

Запуск Cron Service

Почти все дистрибутивы Linux поставляется с предварительно установленной Cron по умолчанию. В случае, если он не установлен на вашем компьютере, вы можете установить его с помощью следующей команды.

Теперь проверьте статус службы Cron, она должна быть запущена в фоновом режиме по умолчанию, вы можете запустить его с команды запуска, если он в остановленном состоянии.

Использование помощи по Cron

После того, как ваша служба Cron установлена, вы можете продолжить вперед и начать использовать его. Для получения дополнительной справки о его использовании вы можете проверить свои страницы человека, выполнив следующие команды.

Эта команда показывает общие инструкции о помощи Crontab. Для того, чтобы получить более конкретную информацию о том, как использовать задачи в Cron, вы также можете проверить с помощью следующей команды.

Для выхода из руководства просто нажмите q или h .

Использование команды Crontab

Здесь мы покажем вам некоторые наиболее важные команды, которые используются для планирования автоматизированных задач с помощью команды Crontab.

Список задач Cron

Используйте следующую команду для получения списка запланированных заданий Cron для текущего авторизованного пользователя.

В команде вывода покажет вам весь список задач, работающих под управлением этого пользователя. Если вы хотите отобразить задания другого пользователя, то мы можем проверить это с помощью следующей команды.

Это будет список задач где упоминалось имя пользователя: username .

Редактирование задач Cron

Чтобы добавить новую задачу или отредактировать существующую, мы будем использовать следующую команду Crontab.

Удалить задачу Cron

Команда может быть использована для удаления запланированных заданий Cron.

Это удалит все задачи без запроса подтверждения. Используйте , -ir если вы хотите, чтобы задачи удалялись в интерактивном режиме .

Планирование задач с помощью Crontab

Теперь мы начинаем использовать задачи с помощью конфигурационного файла, который находится в crontab, в то время как существуют различные способы использования Cron. Вы найдете некоторые каталоги, как cron.daily , cron.hourly , и cron.monthly и т.д. Так что, если вы поместите сценарий задачи в один из этих каталогов, то они будут запускаться по графику в зависимости от имени каталога.

Типы конфигурации Cron

Существуют два типа конфигурационных файлов, которые используются для планирования автоматизированных задач.

Система Crontab

Эти задания Cron используются системными службами и критическими задачами, которые требуются привилегии корневого уровня. Мы можем проверить общесистемный crontab в файле /etc/crontab .

Crontab пользователя

Пользовательские задания уровня хрон задаются отдельно для каждого пользователя, так что каждый пользователь может создавать свои собственные задачи с помощью команды crontab .

Мы можем проверить или редактировать пользовательские задания уровня хрон с помощью следующей команды.

После выбора редактора вы сможете настроить свои новые рабочие места хрон здесь.

Планирование заданий с помощью Crontab

Мы можем планировать задачи, используя свой специальный синтаксис. Существуют также различные короткие ручные команды, которые могут быть использованы в файле crontab, чтобы создавать задачи с легкостью.

Синтаксис записи кронтаб должен быть следующим:

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

Планирование заданий для запуска каждую минуту

В этом примере мы создадим cronjob, который будет выполнять текст “Тест задачи cron выполняется каждую минуту” каждую минуту и отправить по электронной почте user@andreyex.ru .

Ваше первое действие, это редактирование кронтаб с командой ниже:

Поместите следующий скрипт cronjob в cronjob и сохраните изменения.

После того, как вы сохраните файл, вы получите вывод вроде crontab: installing new crontab . Таким образом, это означает, что вы успешно добавили новую задачу в cron.

Планирование задания Cron в определенное время

Теперь давайте посмотрим, сценарий, если вы хотите запланировать задания cron для запуска в определенное время, как в “7:00 вечера” каждый четверг.

Давайте добавим эту строку в crontabs используя следующие команды.

В приведенном выше сценарии “00 15” относится к 3:00 PM в то время как “4” относится ко дню “четверг”.

Вывод

В конце этой статьи вы узнали, как легко можно автоматизировать задачи с помощью crontabs вместо того, чтобы делать это вручную с помощью повторений. Вы узнали о его основных команд и синтаксиса, который будет помогает вам при создании собственных задач.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

источник

Настройка cron в linux

Для выполнения конкретных задач по расписанию, или периодически, через равный промежуток времени (регулярных действий) в линуксе (да и вообще в UNIX-подобных ОС), существует утилита cron. Это программа-демон (служба, по аналогии с Windows), которая постоянно размещена и работает в оперативной памяти компьютера, сканируя раз в минуту список установленных задач на наличие актуальной для выполнения в текущий момент времени. Сами инструкции по запуску задач находятся в специально предназначенных crontab-файлах, которые, в свою очередь, находятся в строго отведённых каталогах системы.

Историческая справка

Утилита была разработана ещё в начале 70-х годов прошлого столетия, когда Кен Томпсон и Деннис Ритчи создали ОС UNIX. Они работали над проектом по созданию многозадачной и многопользовательской системы Multics, в котором принимали участие компании AT&T и Bell Labs. В то время подобная система была настолько высокотехнологичным и прорывным продуктом, что позже Bell Labs отказалась от активного участия в проекте из-за крайне низкой востребованности подобного рода систем для широкого потребления.
Однако, используя наработки из проекта Multics, Томпсон и Ритчи на этой основе и на волне энтузиазма создали ОС UNIX. Такая мощная и прорывная платформа для полноценного раскрытия своего функционала нуждалась в обеспечении её функционалом в виде специализированного ПО и утилит, одной из которых и по сей день является cron. Разработчиком утилиты является Кен Томпсон.

Функционал и основные компоненты примеры cron

Описания регулярных действий, запускаемых утилитой– это так называемая crontab-таблица, которая имеет строго определенный формат. Она состоит из 6 колонок, разделённых табуляторами или пробелами, первые 5 из которых определяют время запуска действия. Последняя колонка интерпретируется как команда запуска, т. е. само действие.

Приведённое описание действия означает запуск резервного копирования (путём архивирования и помещения созданного архива в var/backups/) всех каталога /home каждую неделю (по понедельникам) в 5 утра. Как видно, сначала задаётся колонка минут, затем часов, дней, месяцев и дней недели. Далее следует команда запуска, в данном случае для создания архива. В колонках, определяющих время могут использоваться числа, группы чисел, разделяемых запятыми, диапазоны чисел, разделяемых дефисом, а также символы «*» и «/». Каждому действию соответствует строка описания в crontab-файле. В приведённом примере цифра «1» означает порядковый номер дня недели — понедельник, соответственно «2» — вторник, «3» — среда и т. д., причём воскресенье это «0» или «7». Символ «*» означает любое значение с учётом валидности для соответствующего параметра. Для задания шага значений используется символ «/», например:

Пример настройки планировщика на выполнение задачи каждые 5 минут выглядит так

каждое первое число февраль, июль и ноябрь в 2.30

один раз в день с 00 до 09 часов по буднем.

Для добавления скрипта в крон нужно прописать полный путь к скрипту. Пример

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

Кроме того, местоположение системных и пользовательских crontab-файлов различается: файлы, используемые для действий, управляющих системой находятся в /etc/cron.d/, а файлы, создаваемые для отдельных пользователей хранятся по адресу /var/spool/cron/crontabs/.
Для корректной работы утилиты необходимо в файлах crontab указывать оболочку командного интерпретатора, а также добавлять домашний каталог пользователя в PATH:

При необходимости можно также указать электронный адрес пользователя:

Если в описании действия команда отправляет текстовое содержимое в стандартный вывод, то программа, при наличии электронного адреса, автоматически перехватит это сообщение и отправит по e-mail.

Использование cron

Файлы crontab нельзя редактировать вручную, т. к. это может вызвать сбой в цикле обработки этих файлов, когда демон сканирует их для анализа описаний действий. Для редактирования пользовательского файла crontab существует команда:

При первом своём запуске эта команда сначала предложит выбрать один из имеющихся в системе текстовых редакторов, после чего откроет файл для редактирования.
Для просмотра используемого в данный момент crontab-файла используется команда:

Будьте аккуратны с этой командой, она удаляет всю таблицу задач без предупреждения!

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

Не стоит пугаться директории /tmp/ — файлы crontab в ней не потеряются.

Некоторые особенности cron

Утилита обладает рядом особенностей, которые необходимо учитывать при работе с ней и составлении описаний регулярных действий:

  1. Минимальное время составляет одну минуту.
  2. Файл crontab должен всегда заканчиваться пустой строкой
  3. Условия времени запуска «день недели» и «день месяца» обрабатываются через логическую операцию «ИЛИ», все остальные условия — через логическое «И».
  4. Выводы запускаемых команд выводятся в виде сообщений пользователю, но если в файле crontab была определена директива MAILTO – сообщение будет отправлено по указанному в этой директиве e-mail.

Узнать, запущена ли в данный момент утилита крон, позволяет команда:

Для запуска и остановки можно также использовать:

Логи Cron

Логи по работе запуска программы в каждой системе хранятся по разному. Например в Centos это /var/log/crond, в Ubuntu /var/log/syslog. Так же, если не указанно MAILTO, вывод команд работы скриптов которые запускает крон, можно посмотреть в каталоге /var/spool/mail. В файле пользователя из под которого запускается программа.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

источник

Добавить комментарий