Размер шрифта
Цвета сайта
Изображения

Обычная версия сайта

Крон что такое


Настройка Cron | Losst

Системным администраторам, да и обычным пользователям часто приходится автоматизировать различные задачи по обслуживанию и работе с 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:

crontab -e

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

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

Синтаксис crontab

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

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

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

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

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

crontab -l

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

crontab -r

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

* * * * * /usr/local/bin/serve

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

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

Еще дальше:

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

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

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

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

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

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

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

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

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

0 0 * * 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 минут. Для этого используется разделитель косая черта - "/":

*/10 * * * * /usr/local/bin/serve

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

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

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

@hourly /usr/local/bin/serve

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

sudo vi /etc/corn.daily/basckup

#!/bin/bash

......

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

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

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

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

grep CRON /var/log/syslog

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

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

sudo run-paths /etc/cron.daily/

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

Выводы

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

Что такое Cron и как его использовать?

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

Опытные пользователи

могут использовать cron через оболочку Unix или Центр управления учетными записями (ACC), чтобы легко настроить и поддерживать расписание запуска программ.

Обратите внимание, что вы не должны использовать как оболочку Unix, так и ACC для управления cron . Если вы внесете изменения в cron через оболочку Unix, все будущие изменения этой команды cron не будут отображаться в интерфейсе ACC cron.Любые попытки изменить команду в ACC не вступят в силу.

Что такое хрон?

Cron - это стандартная утилита Unix, которая используется для планирования команд для автоматического выполнения через определенные промежутки времени. Например, у вас может быть скрипт, который генерирует веб-статистику, которую вы хотите запускать один раз в день автоматически в 5:00.

Команды, включающие cron, называются «заданиями cron».

Cron в Центре контроля счетов

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

Чтобы найти интерфейс cron ACC, выполните следующие действия:

  1. Войти в ACC
  2. На левой боковой панели нажмите Дополнительно
  3. В раскрывающемся списке нажмите Управление заданиями Cron

Это приведет вас к интерфейсу Crontab Configuration , где вы сможете создавать, редактировать и удалять задания cron.

Таблица внизу страницы содержит настроенные в настоящий момент задания cron.

Добавить Cron Job

Вы можете добавить задание cron напрямую со страницы Конфигурация Crontab .

Выполните следующие действия:

  1. Внизу страницы нажмите Добавить новое задание Cron
  2. Введите информацию о работе cron:

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

    Команда для запуска Эта команда запускает задание cron автоматически.

    Рекомендуется указать полный путь к файлу для команды. Смотрите эту заметку для получения дополнительной информации.

    Например, команды cron см. В разделе «Примеры команд Cron».

    Частота Определяет, как часто будет выполняться задание cron.
    День месяца / День недели / Интервал День или период времени, когда будет выполняться задание cron.

    Этот раздел будет меняться в зависимости от выбранной частоты

    Время дня Конкретное время выполнения задания cron. Обратите внимание, что указанное время составляет EST .

    Этот раздел используется только с Один раз в месяц , Один раз в неделю и Один раз в день частоты

  3. Нажмите Добавить Cron Job

Важно понимать, что наши серверы настроены на восточный часовой пояс. Этот параметр может повлиять на работу cron в летнее время. В Соединенных Штатах летнее время начинается в 2 часа утра.М. Во второе воскресенье марта и заканчивается 2 мск. в первое воскресенье ноября.

Если вы установите задание cron для выполнения в «промежуток» времени перехода на летнее время (между 2 и 3 часами утра), задание cron не запустится, когда начнется переход на летнее время, и время переместится на час вперед. Кроме того, если у вас есть задание cron, которое будет запущено в «промежуток» времени перехода на летнее время и DST завершится, задание cron будет выполнено дважды.

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

После добавления задания вы увидите его в списке в таблице на странице Конфигурация Crontab .

Управление существующими Cron Jobs

Вы можете редактировать или удалять существующие задания cron из Crontab Configuration , стр. . Все ваши задания cron будут перечислены в таблице внизу страницы.

Чтобы отредактировать задание cron, найдите ссылку на команду в столбце Command и щелкните по ней.

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

Редактировать существующее задание Cron

Находясь на странице управления заданием cron, вы можете редактировать задание, изменив команду, указанную рядом с Команда . Когда закончите, нажмите Изменить команду .

Это немедленно изменит задание cron. Когда запланировано выполнение задания cron, будет запущена новая команда.

Удалить существующее задание Cron

Вы можете удалить работу, нажав кнопку Удалить работу .

Это навсегда удалит задание cron.

Расширенное использование Cron (Руководство)

Чтобы использовать cron вручную, вы должны сначала настроить файл записей cron. Этот файл может быть размещен в любом месте вашей учетной записи и может иметь любое имя файла (хотя crontab.txt является хорошим выбором).

Он должен содержать одну запись для каждого задания, которое вы планируете.

Инструкции по созданию файла с помощью команд Unix см. В разделе «Как создать новый файл» статьи «Основы Unix».

Basic Cron Entry

Запись cron выглядит примерно так:

 30 3 * * * / usr / bin / nice /usr/home/username/script.pl 

В этом случае script.pl будет выполняться ночью в 3:30.

/ usr / bin / nice использует системную команду nice для уменьшения влияния вызова на сервер. Мы рекомендуем вам использовать его со всеми заданиями cron, чтобы наилучшим образом сохранить системные ресурсы.

/usr/home/username/script.pl - это полный путь к скрипту / программе, которую вы хотите запустить cron.

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

 30 3 * * * / usr / bin / nice / bin / rm -f / usr / home / имя пользователя / temp / * 
Установить Cron Time

"30 3 * * *" в примере требует немного большего объяснения:

 30 3 * * * / usr / bin / nice / bin / rm -f / usr / home / имя пользователя / temp / * 

Время выполнения команды cron контролируется 5 числами, предшествующими вызову программы.

Звездочка (*) соответствует всем возможностям. Например, в данном примере скрипт выполняется каждый день, потому что звездочки для дня месяца, дня недели и месяца года соответствуют всем значениям.

Несколько значений разделяются запятыми. Например, вы можете начать с «15 1,3,5 * * *», чтобы запускать сценарий каждый день в 1:15, 3:15 и 5:15.

Обратите внимание, что наши правила запрещают запуск программы через cron чаще, чем раз в час.

Активировать команду Cron

Когда у вас есть файл директории cron в вашей учетной записи, вы должны подключиться через SSH и выполнить команду:

 crontab crontab.txt 

Замените crontab.txt на фактическое имя файла, содержащего ваши записи cron.

Обратите внимание, что вы должны находиться в том же каталоге, что и файл cron в то время.

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

Если вы хотите изменить какое-либо из ваших заданий cron, просто отредактируйте ваш файл и снова запустите команду crontab, как показано выше.

Пример команд cron

Ниже приведены команды, которые вы можете использовать для резервного копирования файлов вашего сайта. Эти команды могут использоваться в команде интерфейса ACC cron для запуска поля или при создании заданий cron вручную.

Замечание о Cron Job Commands

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

Например, чтобы использовать Unix-команду «cat», вы должны использовать «/ bin / cat» вместо просто «cat».

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

 $ HOME / script.pl 

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

Команда резервного копирования домашней директории

Чтобы создать резервную копию вашего домашнего каталога (и исключить каталоги «www_logs» и «backup»), используйте следующую команду:

 / usr / bin / tar czf / USR / дома / имя пользователя / резервное копирование / дома.`/ Bin / дата + \% Y \% m \% d`.tar.gz --exclude www_logs --exclude резервное копирование / usr / home / имя пользователя 

Замените «username» на ваше имя пользователя Pair Networks.

Резервная копия public_html Справочная команда
Аккаунты, созданные до 11 июня 2011 года

Для учетных записей с отдельным каталогом public_html (как правило, учетными записями, созданными до 1 июня 2011 г.), каталог public_html можно создать с помощью:

 / usr / bin / tar czf / USR / дома / имя пользователя / резервное копирование / веб.`/ Bin / дата + \% Y \% м \% d`.tar.gz / usr / www / users / username 

Замените «имя пользователя» на имя пользователя вашей сети.

Аккаунты, созданные после 11 июня 2011 года

Для резервного копирования вашего каталога public_ftp:

 / usr / bin / tar czf / usr / bin / tar czf /usr/home/username/backup/ftp.`/bin/date + \% Y \% m \% d`.tar.gz / usr / public_ftp / username 

Замените «username» на ваше имя пользователя Pair Networks.

Команда резервного копирования веб-журналов

Для резервного копирования ваших веб-журналов:

 / usr / bin / tar czf / USR / дома / имя пользователя / резервное копирование / журналы.`/ Bin / дата + \% Y \% m \% d`.tar.gz / usr / home / username / www_logs 

Замените «username» на ваше имя пользователя Pair Networks.

Команда резервного копирования базы данных

Для резервного копирования конкретной базы данных см. Наши учебные пособия по настройке автоматического резервного копирования:

Запуск PHP-скриптов через Cron Job

Можно запускать сценарии PHP через задание cron. Для этого есть три варианта:

Изменить стартовую линию кода

Один из вариантов запуска сценариев PHP через задания cron - изменить начальную строку кода на полный путь к CGI-копии PHP.

Например, начальную строку кода

 #! / Usr / www / cgi-bin / php7.cgi -q 

Файл может быть вызван с полным путем к файлу.

Позвоните в PHP CLI First

Другой способ запуска сценариев PHP в командной строке - сначала вызвать PHP CLI и указать путь к коду PHP, который вы хотите запустить.

Например, вы также можете использовать путь:

 / usr / local / bin / php / path / to / PHP_SOURCE_FILE 

В этом примере вы должны изменить "/ path / to /" на фактический путь к файлу PHP, а PHP_SOURCE_FILE - на имя файла кода PHP.

По умолчанию / usr / local / bin / php теперь PHP 7.1. Но есть и другие версии, такие как PHP 5.6 в / usr / local / bin / php56 или PHP 7.3 в / usr / local / bin / php73.

Пользователи могут запустить следующую команду, чтобы увидеть все доступные версии PHP:

 ls / usr / local / binphp * 
Позвоните в программу

Третий вариант - вызвать программу наподобие wget по URL-адресу скрипта PHP, чтобы запустить его через PHP.

 / usr / local / bin / wget -q -O - http: // yourdomain.com / wp-cron.php? working_wp_cron> / dev / null 2> & 1 

-q означает «тихий»; отключает вывод wget.

-O - сообщает wget записать на стандартный вывод

> / dev / null перенаправляет стандартный вывод в / dev / null

2> & 1 перенаправляет стандартную ошибку на стандартный вывод, который был перенаправлен на / dev / null

Cron Policy

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

,

Что такое cron и crontab и как их использовать?

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

Примечание:

В большинстве систем вы должны получить разрешение от системный администратор, прежде чем вы сможете отправить хрон. На некоторых общих системах, потому что есть только один файл crontab, только администратор имеет доступ к crontab команда.

Для получения информации об использовании cron на вашем Учетная запись Webserve, см. В АРХИВЕ: Cron: Расписание заданий на WW-серверах IU.

Демон cron - это длительный процесс который выполняет команды в определенные даты и время. Вы можете использовать это планировать мероприятия как разовые или повторяющиеся задачи.

Чтобы запланировать одноразовые задачи с помощью cron, используйте в или в пакетном режиме .Для большего, см. В АРХИВЕ: В Unix, что такое команды at и batch, и как их использовать для отправки неинтерактивных запросов на работу?

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

crontab -a имя файла

Установить имя файла в качестве файла crontab.На многих системах эта команда выполняется просто как crontab имя файла (т.е. без опции -a ).

crontab -e

Отредактируйте файл crontab или создайте его, если он еще не существует.

crontab -l Покажите ваш файл crontab.
crontab -r Удалите файл crontab.
crontab -v

Показать последний раз, когда вы редактировали файл crontab. (Этот вариант доступно только в нескольких системах.)

crontab -u пользователь

Используется в сочетании с другими опциями, эта опция позволяет изменить или просмотреть файл crontab пользователь . При наличии, только администраторы могут использовать этот вариант.

Каждая запись в файле crontab состоит из шести полей, указывающих на следующий заказ:

 минут (ы) час (ы) день (ы) месяц (ы) будний день (ы) команда (ы) 

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

Поле Значение Описание
минута 0-59

Точная минута выполнения последовательности команд

час 0-23

Час дня, когда выполняется последовательность команд

день 1-31

День месяца, в который выполняется последовательность команд

месяц 1-12

Месяц года, в который выполняется последовательность команд

будний день 0-6

День недели, в который выполняется последовательность команд (воскресенье = 0, понедельник = 1, вторник = 2 и т. Д.)

команда Специальный Полная последовательность команд для выполнения.Командная строка должен соответствовать синтаксису оболочки Bourne. Команды, исполняемые файлы (например, скрипты) или их комбинации.

Каждый из шаблонов из первых пяти полей может быть * (звездочка), что означает все допустимые значения или список элементов, разделенных запятыми. Элемент является либо числом, либо включающий диапазон, обозначенный двумя числами, разделенными минусом знак (э.г., , 10-12, ). Вы можете указать дни с двумя полями: день месяца и день недели. Если вы укажете оба из них как список элементов, Cron будет наблюдать их обоих, например:

 0 0 1,15 * 1 / mydir / myprogram 

Демон cron запустит программу myprogram в каталоге mydir на первое и пятнадцатое числа каждого месяца, а также каждый понедельник. к указать дни только одним полем, другое поле должно быть установлено на * , например:

 0 0 * * 1 / mydir / myprogram 

В приведенном выше примере программа будет работать только по понедельникам.

Если задание cron, указанное в вашей записи crontab, выдает какие-либо сообщения об ошибках когда он запустится, вы получите сообщение, сообщающее об ошибках.

Для получения дополнительной информации обратитесь к следующим соответствующим справочным страницам:

 человек crontab человек крон человек в человек партия 
,

Cron - Gentoo Wiki

В этой статье описывается настройка и использование демонов cron в Gentoo Linux.

Cron основы

Что cron делает

Cron - это демон, который запускает запланированные задачи на основе ввода команды crontab. Он выполняет эту задачу, просыпаясь каждую минуту и ​​проверяя, есть ли какие-либо задания cron для выполнения в любом из пользовательских crontabs.

Примечание
  • Обратите внимание, что crontab - это как имя списка заданий cron, так и имя команды для редактирования этого списка.
  • Если вы используете systemd init system, вы также можете использовать (постоянные) таймеры в качестве замены (ana) cron. [[1]]

Фактический хрон

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

Все доступные пакеты cron зависят от sys-process / cronbase.Этот пакет технически не зависит ни от одного из пакетов cron, но он предоставляет функциональность, подобную cron, которую может оценить большинство пользователей.

Прежде чем начать работу с cron, необходимо выбрать правильную реализацию cron.

Какой хрон подходит для работы?

Примечание
Установите virtual / cron для установки стандартной реализации cron в Gentoo.

крони

Cronie (sys-process / cronie) - это ветка устаревшего vixie-cron, созданного Fedora, который до сих пор поддерживается.Из-за того, что он является форком, он имеет тот же набор функций, который предоставляет оригинальный vixie-cron. Кроме того, cronie поставляется с реализацией anacron, которая по умолчанию включена через USE-флаг anacron. Помните о различиях в конфигурации, как отмечено в ошибке # 551352, при миграции из другой системы cron. Ожидаемые задания могут вообще не выполняться.

дкрон (Крон Диллона)

Dcron стремится быть простой, элегантной и безопасной реализацией cron. Он не позволяет задавать переменные окружения в crontabs, и все задания cron запускаются из / bin / sh.Как и vixie-cron, у каждого пользователя есть свой crontab. Начиная с версии 4 он содержит анакроноподобные функции. Последняя версия 4.5 выпущена в мае 2011 года.

Особенности sys-процесса / dcron:

  • Быстро, просто и без лишних функций;
  • Доступ к crontab ограничен группой cron, то есть он не зависит от каких-либо внешних способностей.

fcron

Fcron стремится заменить vixie-cron и анакрон. Он предназначен для работы в системах, которые не работают непрерывно, и имеет множество дополнительных функций.Он имеет ограничения запуска заданий, элементы управления сериализацией заданий, возможность назначать хорошие значения заданиям и возможность планировать задания для запуска при запуске системы. Смотрите домашнюю страницу fcron для получения дополнительной информации. Последние версии были выпущены 3.2.1 в июне 2016 года и 3.3.0 (dev) в августе 2016 года, разработка на GitHub, похоже, прекратилась в июле 2018 года.

Особенности sys-процесса / fcron:

  • Предназначен для работы в системах, которые не работают постоянно, т. Е. Он может запускать задание после перезапуска, если оно пропущено;
  • Установка переменных окружения и многие другие опции в crontabs;
  • улучшенный синтаксис crontab с поддержкой многих новых функций;
  • Каждый пользователь может иметь личный crontab, доступ контролируется cron.разрешить и cron.deny

bcron

Bcron - это новая система cron, разработанная для обеспечения безопасности операций. Для этого система делится на несколько отдельных программ, каждая из которых отвечает за отдельное задание, с строго контролируемой связью между ними. Пользовательский интерфейс представляет собой замену аналогичным системам (таким как vixie-cron), но внутреннее устройство сильно отличается. Для получения дополнительной информации посетите домашнюю страницу bcron по адресу http://untroubled.org/bcron. Последняя версия 0.11 выпущен в августе 2015 года.

Особенности sys-процесса / bcron:

  • Вставная замена для vixie-cron;
  • Многопроцессный дизайн;
  • Поддержка летнего времени.

анакрон

Anacron - это не демон cron, это то, что обычно работает вместе с ним. Он выполняет команды с интервалами, указанными в днях, и не предполагает, что система работает непрерывно; он будет выполнять задания, которые были пропущены, когда система не работала.Anacron обычно использует демон cron для запуска его каждый день.

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

Установка

Выберите правильную реализацию cron для задания, а затем найдите его:

Убедитесь, что выбранный демон cron был добавлен в процесс инициализации системы; без этого шага демон cron не будет выполнять свою работу.

root # /etc/init.d/dcron start

root # rc-update добавить dcron по умолчанию

При желании, если у Fcron или dcron установлено , а не , установка Anacron в качестве помощника демона cron может быть разумным выбором.

root # emerge --ask anacron

Опять же, не забудьте добавить anacron в процесс инициализации системы.

root # /etc/init.d/anacron start

root # rc-update добавить anacron по умолчанию

Для anacron обычно нет процесса инициализации. Вместо этого anacron должен быть запущен через другую реализацию cron.

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

ФАЙЛ / etc / crontab Запуск анакрона по определению cron

 # Запускать анакрон каждые 10 минут * / 10 * * * root / usr / sbin / anacron # В качестве альтернативы, запускайте предоставленный anacron скрипт 0anacron каждый час # 59 * * * * root /etc/cron.hourly/0anacron 

Система crontab

Сообщения после установки от некоторых из этих пакетов cron инструктируют пользователя запустить crontab / etc / crontab.Файл / etc / crontab является системным crontab . Установка cron может использовать его вместе с sys-process / cronbase для запуска сценариев в /etc/cron. enjdaily,hourly,weekly,monthly}. Обратите внимание, что только cronie автоматически планирует задания в / etc / crontab. Пользователи Dcron и fcron должны будут запускать crontab / etc / crontab каждый раз, когда они вносят изменения в файл / etc / crontab.

Обратите внимание, что задания, запланированные в системном crontab, могут не отображаться в списке заданий cron, отображаемом при запуске crontab -l./ # / "/ etc / crontab

Предоставление доверенным пользователям доступа к cron

Чтобы пользователи, кроме root, имели доступ к демону cron, прочитайте этот раздел, в противном случае перейдите к следующему разделу: Планирование заданий cron.

Примечание
Предоставление другому пользователю доступа к crontab не позволяет ему запускать задания cron от имени пользователя root. Чтобы пользователь мог редактировать корневой crontab, посмотрите на использование sudo (app-admin / sudo). Пожалуйста, прочитайте Руководство Gentoo Sudo (ers) для более подробной информации.

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

root # gpasswd-wepy cron

Примечание
При добавлении пользователя в группу cron убедитесь, что пользователь вышел из системы и снова вошел в систему, чтобы изменение группы вступило в силу.

При использовании dcron , вышеуказанный шаг - это все, что необходимо для предоставления пользователю доступа к crontab. Пользователи Dcron могут перейти к следующему разделу «Планирование заданий cron», все остальные должны продолжать читать.

При использовании fcron отредактируйте файлы /etc/fcron/fcron.deny и /etc/fcron/fcron.allow. Самый безопасный способ запуска системы - сначала запретить всем пользователям в /etc/fcron/fcron.deny, а затем явно разрешить пользователям в /etc/fcron/fcron.allow.

Важно
Если ни /etc/fcron/fcron.allow, ни /etc/fcron/fcron.deny не существует, то всем пользователям в группе cron будет разрешено использовать crontab. fcron поставляется с fcron.allow по умолчанию, который разрешает всем пользователям в группе cron доступ к fcrontab.

КОД Разрешения в fcron.deny

 все 

Если пользователь (снова wepy для этого примера) сможет запланировать свои собственные задания cron, то добавьте его в /etc/fcron/fcron.allow следующим образом:

КОД Разрешения в fcron.allow

 wepy 

Если был выбран cronie , просто отредактируйте файл /etc/cron.allow.

Важно
Важно отметить, что если только / etc / cron.allow существует, тогда только пользователи группы cron, перечисленные там, будут иметь доступ. В противном случае, если существует только пустой /etc/cron.deny, то будут разрешены все пользователи группы cron. Не оставляйте пустой /etc/cron.deny, если не существует файла /etc/cron.allow!

Например, чтобы разрешить доступ пользователю wepy , добавьте его в /etc/cron.allow следующим образом:

КОД Разрешения в /etc/cron.allow

 wepy 

Планирование хрон-заданий

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

Версия Редактировать crontab Удалить crontab Новый crontab Список cron-вакансий
дкрон crontab -e crontab -d [пользователь] crontab файл crontab -l
fcron fcrontab -e fcrontab -r [пользователь] fcrontab , файл fcrontab -l
cronie & bcron crontab -e crontab -r -u [пользователь] crontab файл crontab -l

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

Примечание
Fcron также имеет символическую ссылку с crontab на fcrontab.

Прежде чем использовать любую из этих команд, необходимо сначала понять сам crontab. Каждая строка в crontab определяет пять полей времени в следующем порядке: минуты (0-59), часы (0-23), дни месяца (1-31), месяцы (1-12) и дни неделя (0-7, понедельник - день 1, воскресенье - день 0 и день 7). Дни недели и месяцы можно указывать с помощью трехбуквенных сокращений, таких как понедельник, вторник, январь, февраль и т. Д.Каждое поле также может указывать диапазон значений (например, 1-5 или пн-пт), список значений через запятую (например, 1,2,3 или пн, вт, ср) или диапазон значений с шагом (например, 1-6 / 2 как 1,3,5).

Это звучит немного запутанно, но с несколькими примерами легко увидеть, что это не так сложно, как кажется.

КОД Примеры

 # Запускать / bin / false каждую минуту круглый год * * * * * / bin / false # Выполните / bin / false в 1:35 в понедельник, вторник, четверг и четвертое число каждого месяца. 35 1 4 * пн / бен / ложь # Run / bin / true 2 марта в 22:25 25 22 2 3 * / bin / true # Запустите / bin / false в 2:00 каждый понедельник, среду и пятницу 0 2 * * 1-5 / 2 / bin / false 

Примечание
Обратите внимание, как указать конкретные дни недели и дни месяца до их объединения.Если * используется только для одного из них, другой имеет приоритет, в то время как * для обоих означает только каждый день.

Чтобы протестировать то, что только что было рассмотрено, выполните шаги по вводу нескольких заданий cron. Сначала создайте файл с именем crons.cron и сделайте так:

ФАЙЛ crons.cron Создать файл crons.cron

 # Мин. Часы Дни Месяцы День недели 10 3 1 1 * / bin / echo "Мне не очень нравится cron" 30 16 * 1,2 * / bin / echo "Мне немного нравится cron" * * * 1-12 / 2 * / bin / echo "Мне очень нравится cron" 

Теперь добавьте этот crontab в систему с помощью «новой команды» из таблицы выше.

Примечание
Выходные данные команд echo не будут видны, если не используется перенаправление.

Чтобы проверить запланированные задания cron, используйте правильную команду списка из таблицы выше.

Должен отображаться список, напоминающий crons.cron; если нет, возможно, была введена неправильная команда для ввода crontab.

Этот crontab должен повторять «Мне действительно нравится cron» каждую минуту каждого часа каждого дня, через месяц. Очевидно, что пользователь будет делать это только в том случае, если ему действительно нравится cron.Crontab также будет повторять «Мне немного нравится cron» в 16:30 каждый день в январе и феврале. Это также будет звучать так: «Мне не очень нравится cron» в 3:10 1 января.

При использовании anacron продолжайте читать этот раздел. В противном случае перейдите к следующему разделу Редактирование crontabs.

Пользователи Anacron захотят отредактировать / etc / anacrontab. Этот файл имеет четыре поля: количество дней между каждым запуском, задержка в минутах, после которого он запускается, имя задания и команда для запуска.

Например, чтобы запускать эхо-запрос «Мне нравится анакрон» каждые 5 дней, через 10 минут после запуска анакрона введите следующее:

ФАЙЛ / etc / anacrontab

 5 10 тратить время / bin / echo "Мне нравится анакрон" 

Anacron завершает работу после завершения всех заданий в anacrontab. Чтобы проверить, нужно ли выполнять эти задания каждый день, будет использоваться демон cron. Инструкции в конце следующего раздела объясняют, как это следует делать.

Редактирование crontabs

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

root # crontab -d

root # crontab -l

В выводе crontab -l не должны отображаться задания cron.Если в списке заданий cron, команде удаления не удалось удалить crontab; проверьте правильность команды remove для системного пакета cron.

Теперь, когда у нас есть чистое состояние, давайте поместим что-то полезное в корень корня . Большинство людей захотят запускать updatedb еженедельно, чтобы убедиться, что mlocate работает правильно. Чтобы добавить это в системный файл crontab, сначала снова отредактируйте файл crons.cron, чтобы он выглядел следующим образом:

КОД Настоящий crontab

 22 2 * * 1 / usr / bin / updatedb 

Это заставило бы cron запускать updatedb в 2:22 A.М. в понедельник утром каждую неделю. Теперь введите crontab с правильной новой командой из таблицы выше, и снова проверьте список.

root # crontab crons.cron

root # crontab -l

Теперь давайте предположим, что emerge --sync должен запускаться ежедневно, чтобы поддерживать дерево Portage в актуальном состоянии. Это можно сделать, сначала отредактировав crons.cron, а затем используя crontab crons.cron, как это было сделано в примере выше, или , с помощью правильной команды редактирования из таблицы выше.Это дает возможность редактировать пользовательский crontab на месте, не завися от внешних файлов, таких как crons.cron.

Приведенная выше команда должна открыть crontab пользователя с редактором. Например, если emerge --sync должен запускаться каждый день в 6:30 утра, заставьте crontab выглядеть примерно так:

КОД Настоящий crontab

 22 2 * * 1 / usr / bin / updatedb 30 6 * * * / usr / bin / emerge --sync ## (при использовании anacron добавьте эту строку) 30 7 * * * / usr / sbin / anacron -s 

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

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

Как упоминалось ранее, все доступные пакеты cron зависят от sys-process / cronbase. Пакет cronbase создает файл /etc/cron.atellhourly,daily,weekly,monthly} и скрипт, называемый run-crons. Обратите внимание, что файл / etc / crontab по умолчанию содержит что-то вроде этого:

КОД Система по умолчанию crontab

 * / 15 * * * * test -x / usr / sbin / run-crons && / usr / sbin / run-crons 0 * * * * rm -f / var / spool / cron / lastrun / cron.почасовой 0 3 * * * rm -f /var/spool/cron/lastrun/cron.daily 15 4 * * 6 rm -f /var/spool/cron/lastrun/cron.weekly 30 5 1 * * rm -f /var/spool/cron/lastrun/cron.monthly 

Чтобы не вдаваться в подробности, предположим, что эти команды будут эффективно запускать ежечасные, ежедневные, еженедельные и ежемесячные сценарии. Этот метод планирования заданий cron имеет несколько важных преимуществ:

  • Они будут работать, даже если компьютер был выключен, когда они были запланированы для запуска;
  • Разработчикам пакетов легко размещать сценарии в этих четко определенных местах;
  • Администраторы точно знают, где хранятся задания cron и crontab, что упрощает резервное копирование и восстановление этих частей их систем.
Примечание
Опять же, полезно указать, что cronie и bcron автоматически читают / etc / crontab, а dcron и fcron - нет. Пожалуйста, прочитайте раздел System crontab, чтобы узнать больше об этом.

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

Как упоминалось ранее, anacron используется в системах, которые не предназначены для непрерывной работы (например, в большинстве настольных систем). Его файл конфигурации по умолчанию, / etc / anacrontab, обычно похож на следующий:

ФАЙЛ / etc / anacrontab

 SHELL = / bin / sh PATH = / USR / местные / SBIN: / USR / местные / бен: / SBIN: / бен: / USR / SBIN: / USR / бен # формат: команда идентификатора задания периода задержки 1 5 крон.ежедневные прогоны /etc/cron.daily 7 10 cron.weekly run-parts /etc/cron.weekly 30 15 cron.monthly run-parts /etc/cron.monthly 

Основное различие между этим и другими общими crontabs заключается в том, что в anacron нет фиксированной даты / часа для планирования задания, а только период между каждым запуском. Когда запускается anacron, он проверяет содержимое набора файлов в / var / spool / anacron и вычисляет, истек ли срок соответствующей записи в файле конфигурации с момента последнего запуска.Если это так, то команда вызывается снова.

В качестве последнего замечания важно закомментировать любую перекрывающуюся запись в любом другом cron, установленном в системе, например, в следующем примере crontab vixie-cron:

ФАЙЛ / etc / crontab

 # для vixie-cron # $ Заголовок: /var/cvsroot/gentoo-x86/sys-process/vixie-cron/files/crontab-3.0.1-r4,v 1.3 2011/09/20 15:13:51 idl0r Exp $ # Глобальные переменные SHELL = / bin / Баш PATH = / SBIN: / бен: / USR / SBIN: / USR / бен MAILTO = корень НАЧАЛО = / # проверять скрипты в cron.ежечасно, cron.daily, cron.weekly и cron.monthly 59 * * * * root rm -f /var/spool/cron/lastrun/cron.hourly # 9 3 * * * root rm -f /var/spool/cron/lastrun/cron.daily # 19 4 * * 6 root rm -f /var/spool/cron/lastrun/cron.weekly # 29 5 1 * * root rm -f /var/spool/cron/lastrun/cron.monthly # * / 10 * * * * корневой тест -x / usr / sbin / run-crons && / usr / sbin / run-crons @ Почасовой корень тест! -e /var/spool/cron/lastrun/cron.hourly && touch / var / spool / cron / lastrun / cron.ежечасно && run-parts --report /etc/cron.hourly 

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

Устранение неисправностей

При возникновении проблем с правильной работой cron этот краткий контрольный список может оказаться полезным.

Помните, что каждый пакет cron отличается от других, а спектр его возможностей сильно различается. Обязательно обратитесь к справочным страницам для crontab, fcrontab или anacrontab, в зависимости от того, какой демон cron был активирован!

cron работает?

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

cron работает?

Попробуйте следующее:

КОД crontab, чтобы увидеть, работает ли cron

 * * * * * / bin / echo "foobar" >> / file_you_own 

Затем проверьте, периодически ли изменяется / file_you_own.

Команда работает?

То же, что и раньше, но, возможно, также перенаправить стандартный вывод ошибок:

КОД crontab для проверки работоспособности приложения

 * * * * * / bin / echo "foobar" >> / file_you_own 2> & 1 
Может ли Cron запустить работу?

Проверьте журнал cron, обычно /var/log/cron.log или / var / log / messages на наличие ошибок.

Есть ли мертвые письма?

cron обычно отправляет почту при возникновении проблемы; проверьте почту и поищите создание ~ / dead.файл письма.

Почему cron письма не рассылаются?

Для получения писем от cron должна быть установлена ​​действующая настройка MTA. Это обеспечивается любым пакетом из виртуального / мта.

Если сообщения cron должны отправляться только локально, а не через полностью настроенный почтовый сервер, система может использовать почту mbox (/ var / spool / mail), включив флаг использования mbox с соответствующим пакетом, который предоставляет MTA ,

Cron Jobs Альтернативы

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

  • EasyCron
    Эта страница основана на документе, ранее найденном на нашем главном сайте gentoo.орг.
    Следующие люди внесли свой вклад в первоначальный документ: Эрик Браун, Ксавье Нейс,
    Они перечислены здесь, потому что история вики не допускает какой-либо внешней ссылки. Если вы редактируете статью в вики, пожалуйста, добавьте , а не ; ваш вклад записывается на странице истории каждой статьи.
.

Смотрите также

 

2011-2017 © МБУЗ ГКП №  7, г.Челябинск.