Cron/ru

Это руководство описывает установку и использование cron.

Что делает cron?
Cron - это программа-демон, запускающая запланированные задания, основываясь на результате работы команды. Она выполняет эти задания просыпаясь каждую минуту и проверяя, есть ли какие-нибудь задания cron (cron-jobs) для запуска в каком-либо из файлов заданий crontab пользователя.

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

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

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

vixie-cron
Vixie-cron is a full featured cron implementation based on SysV cron. Each user has his own crontab and is allowed to specify environment variables within that crontab. Unlike the other cron variants, it also offers support for SELinux and PAM. It supports fewer architectures than Dcron, but more than Fcron.

Особенности  :


 * Поддержка SELinux
 * Поддержка PAM
 * Установка переменных среды в файлах заданий crontabs (PATH, SHELL, HOME, etc.)
 * Каждый пользователь может иметь свой собственный файл заданий crontab; доступ контролируется файлами и

cronie
Cronie (sys-process/cronie) is a fork of vixie-cron done by fedora. Because of it being a fork it has the same feature set the original vixie-cron provides. Additionally cronie comes with an anacron implementation which must be enabled through the anacron USE flag.

dcron (Dillon's Cron)
Dcron aims to be a simple, elegant and secure implementation of cron. It does not allow the specification of environment variables in crontabs and all cron-jobs are run from. Like vixie-cron, each user has his own crontab.

Особенности  :


 * Быстрый, простой и свободный от излишних функций
 * Доступ к файлу  ограничен группой cron, т.е. он не полагается на внешние средства

fcron
Fcron aims at replacing vixie-cron and anacron. It is designed to work on systems that are not continuously running and it is packed with extra features. It has job startup constraints, job serialization controls, the ability to assign nice values to jobs and the ability to schedule jobs to run at system startup. See fcron's home page for more information.

Особенности  :


 * Разработан для работы на системах, которые не работают непрерывно, т.е. он может запустить задание после перезапуска, если оно было пропущено
 * Установка переменных среды и множества других параметров в файлах заданий crontab
 * Каждый пользователь может иметь свой собственный файл заданий crontab, доступ к которому контролируется файлами cron.allow и cron.deny
 * Улучшенный синтаксис crontab с поддержкой множества других особенностей

bcron
Bcron is a new cron system designed with secure operations in mind. To do this, the system is divided into several separate programs, each responsible for a separate task, with strictly controlled communications between them. The user interface is a drop-in replacement for similar systems (such as vixie-cron), but the internals differ greatly. For more information, see the bcron homepage at http://untroubled.org/bcron.

Особенности  :


 * Легкая замена vixie-cron
 * Ориентированность на множество процессов
 * Нативная поддержка перехода на летнее время

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

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

Опционально, если Вы не устанавливали Fcron, Вы можете также пожелать установить Anacron.

Системный файл crontab
The post install messages from some of these cron packages tell you to run. The file is your system crontab. A cron installation can use it in conjunction with  to run the scripts in. Note that only vixie-cron and cronie schedule jobs in automatically. Dcron and fcron users will need to run  every time they make changes to.

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

Of course, you can choose not to use any system crontab at all. If you chose dcron or fcron, do not run. If you chose vixie-cron, cronie or bcron, you should comment all lines in.

Предоставление доступа к cron проверенным пользователям
If you want users other than root to have access to the cron daemon, you'll want to read this section, otherwise, you can proceed to the next section, Scheduling cron-jobs.

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

If you're using dcron, that's all you have to do to give a user access to crontab. Dcron users may proceed to the next section Scheduling cron-jobs, all others will want to keep reading.

If you're using fcron, you'll want to edit and. The most secure way is to first deny everyone in, and then explicitly allow users in.

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

If you chose vixie-cron or cronie, you'll probably just want to edit.

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

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

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

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

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

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

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

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

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

If you are using anacron, you should keep reading this section. Otherwise, proceed to the next section on Editing crontabs.

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

For example, to have it run  every 5 days, 10 minutes after anacron is started, you would have:

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

Редактирование crontabs
Все же, давайте будем реалистами; Вы не хотите, чтобы система сообщала Вам как сильно Вы любите cron каждую минуту. Как шаг вперед, давайте удалим этот crontab, используя соответствующую команду Удалить crontab из таблицы выше. Мы также перечислим задания cron после этого, чтобы убедиться что оно работает.

Вы должны увидеть no cron jobs в качестве результата работы команды. Если Вы видите перечисленные задания, это значит, что мы не смогли удалить crontab, и что Вам придется удостовериться, что Вы использовали правильную команду Удалить из своего пакета cron.

Now that we have a clean state, let's put something useful into the root crontab. Most people will want to run  on a weekly basis to make sure that   works properly. To add that to your crontab, let's first edit again so that it looks like the following:

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

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

Это должно открыть Ваш пользовательский crontab с помощью редактора. Мы хотим, чтобы команда  работала каждый день в 6:30 A.M., поэтому мы придадим ей следующий вид:

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

Использование cronbase
Как упомянуто ранее, все доступные пакеты cron зависят от. Пакет cronbase создает, и сценарий, называемый. Вы можете заметить, что по умолчанию содержит что-то в этом роде:

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


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

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

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

As a final note, it is important to comment out any overlapping entry in any other cron installed in the system, such as in the following vixie-cron crontab example:

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

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

Удачи!

Устранение проблем
Если у Вас проблемы с нормальной работой cron, вы можете просмотреть этот быстрый проверочный список.

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

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

Затем проверьте модифицируется ли файл периодически.

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

Может ли cron запустить Ваше задание
Проверьте лог-файл cron, обычно или, на ошибки

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

Благодарности
Мы хотели бы поблагодарить следующих авторов и редакторов за их вклад в это руководство:


 * Eric Brown
 * Xavier Neys
 * nightmorph