Cron — планировщик заданий в Linux
Системным администраторам и разработчикам часто приходится сталкиваться с периодическим выполнением скриптов и заданий. В Linux автоматическим выполнением задач по расписанию занимается cron.
Cron — это планировщик, который позволяет автоматически выполнять задачи по заданному расписанию от имени разных пользователей. Такие задачи называются Cron Jobs.
Каждая задача (скрипт) описывается одной строкой в файле crontab. Сначала указывается расписание, потом ссылка на скрипт. Шаблон задания выглядит так:
* * * * * /path/to/job.sh
Что можно понимать как:
[минуты] [часы] [день месяца] [месяц] [день недели] [абсолютный путь к файлу]
Более наглядно (можно скопировать):
# * * * * * /path/to/job.sh # | | | | | # | | | | +——— день недели (0-6), 0 — воскресенье # | | | +————— месяц (1-12) # | | +——————— день месяца (1-31) # | +————————— часы (0-23) # +——————————— минуты (0-59)
- * — звёздочка обозначает все значения
- , — разделитель значений
- — — диапазон значений
- / — чередование значений
Пять звёздочек — запуск скрипта каждую минуту каждого часа в каждый день месяца во все месяцы и дни недели. Т.е. раз в минуту. Допустимо указывать отдельные числа, диапазоны и несколько диапазонов через запятую. Можно чередовать значения. Например:
30 13 7-8 feb-apr,nov-dec * /path/to/job.sh
Скрипт будет выполняться:
- 7 февраля в 13:30
- 8 февраля в 13:30
- 7 марта в 13:30
- 8 марта в 13:30
- 7 апреля в 13:30
- 8 апреля в 13:30
- 7 ноября в 13:30
- 8 ноября в 13:30
- 7 декабря в 13:30
Полезные команды
man crontab
Список задач текущего пользователя:
crontab -l
Список задач выбранного пользователя:
crontab -u пользователь -l
Резервное копирование списка задач текущего пользователя в текстовый файл:
crontab -l > backup.txt
Восстановление задач из бэкапа в список задач текущего пользователя:
crontab backup.txt
Удаление задач текущего пользователя:
crontab -r
Редактирование задач текущего пользователя:
crontab -e
Если эта команда выполняется в первый раз, вам предложат выбрать редактор:
no crontab for sk - using an empty one Select an editor. To change later, run 'select-editor'. 1. /bin/nanoИзначально crontab-файл пустой:
Файлы crontab после их создания находятся здесь:
/var/spool/cron/crontabsПримеры задач
Выполнять скрипт каждую минуту:
* * * * * /path/to/job.sh
Выполнять скрипт раз в пятнадцать минут:
*/15 * * * * /path/to/job.sh
Выполнять скрипт каждый час в сорок минут:
40 * * * * /path/to/job.sh
Выполнять скрипт в семь утра:
0 7 * * * /path/to/job.sh
Выполнять скрипт в семь утра и семь вечера:
0 7,19 * * * /path/to/job.sh
Выполнять скрипт каждые два часа:
0 */2 * * * /path/to/job.sh
Выполнять скрипт в семь утра по понедельникам:
0 7 * * mon /path/to/job.sh
Выполнять скрипт в семь утра по будням:
0 7 * * 1-5 /path/to/job.sh
Cуществуют готовые задания:
- @reboot — одиночное выполнение команды при загрузке
- @yearly — раз в год (аналог 0 0 1 1 *)
- @annually — тоже раз в год
- @monthly — раз в месяц (аналог 0 0 1 * *)
- @weekly — один раз в неделю (аналог 0 0 * * mon)
- @daily — раз в день (аналог 0 0 * * *)
- @midnight — тоже раз в день
- @hourly — раз в час (аналог 0 * * * *)
Crontab генератор
Если вам лень во всём этом разбираться, то воспользуйтесь онлайн генератором:
cron не работает, если в конце crontab нет перевода строки.
Теги
Похожие материалы
Установка VMware Tools на Ubuntu
Олег
- 9 февраля 2018
- Подробнее о Установка VMware Tools на Ubuntu
VMware Tools - бесплатный набор утилит для улучшения взаимодействия виртуальной машины и платформы VMware. В Интернете пишут про то, что от установки VMware Tools улучшается производительность виртуальной машины. В качестве примера указывают на то, что только в этом наборе утилит есть драйвера для сетевой карты vmxnet3. Не согласен, драйвера можно и отдельно поставить. В linux так и без этих драйверов сетевая карта работает нормально. А вот если у вас Windows Server - рекомендую vmxnet3, меньше глюков.
Как удалить задание cron в Linux?
Для планирования выполнения процессов в вашей системе используется встроенная утилита Linux, известная как демон «cron». cron ищет указанные сценарии и файлы в «crontab» или «таблицах cron. Файл crontab содержит список команд, которые вы хотите запускать по обычному расписанию. Кроме того, у него есть имена команд, которые управляют списком этих команд. Crontab также использует планировщик заданий cron для выполнения задач. cron используется как системная функция, которая будет выполнять или выполнять процессы от вашего имени в соответствии с заранее установленным расписанием. Это расписание называется crontab, и инструмент, используемый для его редактирования, также называется crontab.
Использование crontab в Linux:
crontab — популярный планировщик задач, включенный в системный пакет Linux, поскольку он планирует выполнение процесса от имени пользователя root. В результате запуск автоматизированной операции с правами root упрощает обновление системы. Все, что вам нужно сделать, это изменить задание cron и дождаться его перезапуска.
Синтаксис кронтаба:
Каждое поле в файле crontab существует в следующем порядке:
minute ( s ) hour ( s ) day ( s ) month ( s ) weekday ( s ) command ( s )
Вот синтаксис команды crontab:
* * * * * / path_to_script
-
Используйте звездочки (*) для сопоставления.
Это вся необходимая информация о crontab. Теперь давайте перейдем к тому, как мы можем удалить задание cron в Linux.
Удаление задания cron:
Чтобы продемонстрировать процедуру удаления задания cron, прежде всего, мы добавим задание в crontab с помощью следующей команды:
$ ( crontab -u linux-console -l ; echo "*/5 * * * * perl /home/linux-console/test.pl" ) | crontab -u linux-console -
Эта команда создает новое задание cron для пользователя «linux-console» для отображения информации о заданиях cron в файле «test.pl» через каждые «5» минут. ”
Проверьте существование только что созданного файла cron.
$ sudo ls -l / var / spool / cron / crontabs
Запишите приведенную ниже команду, чтобы удалить задание cron из crontab.
$ crontab -u linux-console -l | grep -v 'perl /home/linux-console/test.pl' | crontab -u linux-console -
Используя команду crontab -r:
Защита файлов crontab настроена таким образом, что вы не можете случайно удалить файл crontab с помощью команды rm. Для удаления файлов crontab используйте команду crontab -r.
Снова проверьте crontab, чтобы убедиться, что задание cron удалено или нет.
Обзор автоматизированных задач Cron
Настройка cron является важным шагом в установке веб-сайта и помогает в обслуживании ресурсов сайта для результатов поиска, проверке обновлений ядра и модулей Drupal и удалении временных файлов.
Правильно настроенное задание cron управляет множеством задач:
- Обновляет индекс содержимого сайта, используемого модулем поиска.
- Фиды очередей, которые будут обновлены модулем агрегатора.
- Проверяет наличие доступных обновлений для модуля диспетчера обновлений.
- Выполняет обычные задачи обслуживания, такие как удаление старых строк из журналов, для системного модуля.
Что такое cron?
Cron - это демон, который выполняет команды с заданными интервалами. Эти команды называются «заданиями cron». Cron доступен на серверах Unix, Linux и Mac. Серверы Windows используют запланированное задание для выполнения команд. Фактическое «задание cron» - это инициируемое по времени действие, которое обычно (и наиболее эффективно) выполняется хост-сервером вашего сайта, но также может быть настроено удаленным сервером или даже с вашего собственного рабочего стола.
На самом деле происходит то, что задание cron посещает файл cron.php на вашем веб-сайте по URL-адресу, например http://www.example.com/cron.php?cron_key=0MgWtfB33FYbbQ5UAC3L0LL3RC0PT3RNUBZILLA0Nf1Re. Точный адрес файла cron.php можно найти в Отчете о состоянии в разделе Администрирование> Отчеты> Отчет о состоянии (admin / reports / status) в разделе Задачи обслуживания Cron.
Включение cron
Самый простой способ - позволить Drupal сделать это за вас (что он делает по умолчанию), используя встроенную систему «автоматизированного cron». Вы можете управлять "автоматическим cron" через Управление> Конфигурация> Система> Cron (admin / config / system / cron). Частота по умолчанию - каждые три часа. После этого Cron будет вызываться конечными пользователями, посещающими ваш сайт, не чаще, чем каждые три часа. Обратите внимание, что для сайтов с низким трафиком также может быть желательно создать задание cron. Если вы хотите отключить автоматический cron, измените раскрывающийся список «Запускать cron каждые» на «никогда».
Автоматизированная система cron совместима со всеми системами, потому что она на самом деле не использует системный демон cron. Он работает, проверяя в конце каждого запроса Drupal, чтобы увидеть, когда cron последний раз работал, и, если это было слишком долго, обрабатывает задачи cron как часть этого запроса. Два недостатка: (1) задачи cron будут выполняться только когда Drupal обрабатывает запросы; и (2) «вес» (обработка и память) запуска задач cron будет добавлен к некоторому произвольному неизвестному запросу страницы, что может замедлить эти запросы и потенциально может превысить пределы памяти на сложном сайте.
Второй способ (который применим к любой версии Drupal) - создать задание cron или использовать какой-либо другой внешний (для Drupal) метод запуска задач cron, например, внешний сервис заданий cron, такой как EasyCron или Cronless. Это более надежный из двух методов (потому что он всегда будет выполняться по расписанию), и он использует меньше ресурсов (потому что обработка cron не добавляется в запрос страницы). Поэтому, как правило, это предпочтительный способ запуска cron, когда у вас есть выбор. Обратите внимание, что если вы создаете задание cron, вы можете полностью отключить систему «cron».
Отключение "автоматического cron"
По соображениям производительности или если вы хотите, чтобы cron мог работать только из внешнего триггера, может быть желательно отключить автоматизированную систему cron.
Вы можете отключить его, установив для параметра «Запускать cron каждые» значение «Никогда» (например, в разделе «Администрирование> Конфигурация> Система> Cron» (admin / config / system / cron).
Другой способ отключить cron в Drupal 8 - добавить в файл settings.php следующую строку:
$config['automated_cron.settings']['interval'] = 0;
Обратите внимание, что это исправляет параметр admin/config/system/cron в значение «Никогда», и пользователи с правами администратора не могут его переопределить.
Как использовать задачи в cron для автоматизации на Ubuntu 14.04
Крон является одним из самых мощных инструментом в базе Linux / Unix операционных систем. Cron это утилита, которую Linux использует для планирования задачи, которая будет выполнена в определенное время в соответствии с графиком его, в назначенное время.
Чаще всего они используются для автоматизации деятельности по администрированию системы и техническое обслуживание. Как и рассылка уведомления каждый день об успешном завершении запланированных резервных копий или очистки каталога /tmp/ . Есть много других ситуаций, когда веб — приложение требует периодически запускать определенные задачи.
Итак, в этой статье мы будем направлять вас о своем рабочем механизме и показать, как легко вы можете планировать свои задачи с помощью заданий Cron. «Cron» сам по себе это демон, который работает в фоновом режиме, а график различных задач находится в конфигурационном файле под названием «Crontab«, где все задачи и сроки планируется.
Запуск Cron Service
Почти все дистрибутивы Linux поставляется с предварительно установленной Cron по умолчанию. В случае, если он не установлен на вашем компьютере, вы можете установить его с помощью следующей команды.
apt-get install cron
Теперь проверьте статус службы Cron, она должна быть запущена в фоновом режиме по умолчанию, вы можете запустить его с команды запуска, если он в остановленном состоянии.
service cron start service cron status #cron start/running, process 1027
Использование помощи по Cron
После того, как ваша служба Cron установлена, вы можете продолжить вперед и начать использовать его. Для получения дополнительной справки о его использовании вы можете проверить свои страницы человека, выполнив следующие команды.
man crontab
Эта команда показывает общие инструкции о помощи Crontab. Для того, чтобы получить более конкретную информацию о том, как использовать задачи в Cron, вы также можете проверить с помощью следующей команды.
man 5 crontab
Для выхода из руководства просто нажмите q или h .
Использование команды Crontab
Здесь мы покажем вам некоторые наиболее важные команды, которые используются для планирования автоматизированных задач с помощью команды Crontab.
Список задач Cron
Используйте следующую команду для получения списка запланированных заданий Cron для текущего авторизованного пользователя.
crontab –l
В команде вывода покажет вам весь список задач, работающих под управлением этого пользователя. Если вы хотите отобразить задания другого пользователя, то мы можем проверить это с помощью следующей команды.
crontab –l –u username
Это будет список задач где упоминалось имя пользователя: username .
Редактирование задач Cron
Чтобы добавить новую задачу или отредактировать существующую, мы будем использовать следующую команду Crontab.
crontab -e
Удалить задачу Cron
Команда может быть использована для удаления запланированных заданий Cron.
crontab –r
Это удалит все задачи без запроса подтверждения. Используйте , -ir если вы хотите, чтобы задачи удалялись в интерактивном режиме .
crontab -ir
Планирование задач с помощью Crontab
Теперь мы начинаем использовать задачи с помощью конфигурационного файла, который находится в crontab, в то время как существуют различные способы использования Cron. Вы найдете некоторые каталоги, как cron.daily , cron.hourly , и cron.monthly и т.д. Так что, если вы поместите сценарий задачи в один из этих каталогов, то они будут запускаться по графику в зависимости от имени каталога.
Типы конфигурации Cron
Существуют два типа конфигурационных файлов, которые используются для планирования автоматизированных задач.
Система Crontab
Эти задания Cron используются системными службами и критическими задачами, которые требуются привилегии корневого уровня. Мы можем проверить общесистемный crontab в файле /etc/crontab .
Crontab пользователя
Пользовательские задания уровня хрон задаются отдельно для каждого пользователя, так что каждый пользователь может создавать свои собственные задачи с помощью команды crontab .
Мы можем проверить или редактировать пользовательские задания уровня хрон с помощью следующей команды.
crontab –e
После выбора редактора вы сможете настроить свои новые рабочие места хрон здесь.
Планирование заданий с помощью Crontab
Мы можем планировать задачи, используя свой специальный синтаксис. Существуют также различные короткие ручные команды, которые могут быть использованы в файле crontab, чтобы создавать задачи с легкостью.
Синтаксис записи кронтаб должен быть следующим:
#* * * * * command to be executed #- - - - - #| | | | | #| | | | ----- Day of week (0 - 7) (Sunday=0 or 7) #| | | ------- Month (1 - 12) #| | --------- Day of month (1 - 31) #| ----------- Hour (0 - 23) #------------- Minute (0 - 59)
Теперь вы знакомы с командами crontab, синтаксис и типы задач в cron, в настоящее время мы создадим несколько тестовых заданий, добавим в крон и посмотрим, как это работает. Вы можете запланировать любую из вашей повседневной задачи, добавив его с командой crontab –e .
Планирование заданий для запуска каждую минуту
В этом примере мы создадим cronjob, который будет выполнять текст «Тест задачи cron выполняется каждую минуту» каждую минуту и отправить по электронной почте user@andreyex.ru .
Ваше первое действие, это редактирование кронтаб с командой ниже:
crontab –e
Поместите следующий скрипт cronjob в cronjob и сохраните изменения.
SHELL=/bin/bash HOME=/ MAILTO=”user@andreyex.ru” #This is a comment * * * * * echo 'Тест задачи cron выполняется каждую минуту' :wq!
После того, как вы сохраните файл, вы получите вывод вроде crontab: installing new crontab . Таким образом, это означает, что вы успешно добавили новую задачу в cron.
Планирование задания Cron в определенное время
Теперь давайте посмотрим, сценарий, если вы хотите запланировать задания cron для запуска в определенное время, как в «7:00 вечера» каждый четверг.
00 15 * * 4 sh /root/test.sh
Давайте добавим эту строку в crontabs используя следующие команды.
crontab -e crontab: installing new crontab
В приведенном выше сценарии «00 15» относится к 3:00 PM в то время как «4» относится ко дню «четверг».
Вывод
В конце этой статьи вы узнали, как легко можно автоматизировать задачи с помощью crontabs вместо того, чтобы делать это вручную с помощью повторений. Вы узнали о его основных команд и синтаксиса, который будет помогает вам при создании собственных задач.