Настройка cron

Как составить расписание задач с помощью Cron

Звучит просто: для планирования задач просто добавьте их в свой crontab. Поскольку crontab — это специальный файл конфигурации, редактировать его вручную не рекомендуется. Вместо этого используйте команду . Чтобы отредактировать crontabs root или других пользователей, запустите команду с правами администратора и добавьте их имя пользователя после опции -u:

Файл crontab состоит из двух разделов. Первый содержит переменные среды, которые устанавливаются автоматически. Вы можете безопасно изменять переменные PATH, HOME и SHELL и изменять переменную MAIL.

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

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

  • Числа должны быть целыми числами (целыми числами), и вы можете использовать звездочку (*) в любом из столбцов в качестве подстановочного знака, что означает «каждую минуту / день / месяц…».
  • В столбце «День месяца» старайтесь не устанавливать дату, которая не встречается в месяце, указанном в столбце «Месяц» (например, 30 февраля).
  • Столбцы «Месяц» и «День недели» принимают короткие имена для месяцев и дней соответственно и нечувствительны к регистру.
  • В столбце «День недели» 0 и 7 обозначают воскресенье. В столбце «Час» требуется формат «военное время» (24 часа), но вы не можете использовать число 24 — вместо этого 0 означает 12:00. Это происходит потому, что значения минут, часов и дня недели начинаются с 0 вместо 1.
  • Секунды не поддерживаются, поэтому вы не можете запланировать задачу на определенную секунду.

Что вы можете сделать, так это запланировать интервалы времени с использованием дефиса (14-22 в разделе «Часы» будут запускать задачу непрерывно с 14:00 до 22:00) или запустить одну задачу несколько раз, определив список через запятую (1, 3,5 в «День недели» будет запускать задание в понедельник, среду и пятницу).

Между тем, значения шага представлены косой чертой (/), и они указывают количество пропусков в пределах диапазона; например, 3-20 / 3 в разделе «Часы» будет запускать задачу каждые три часа с 3:00 до 20:00. Это полезно, если вы хотите повторять задачи каждые X часов, поскольку вы можете объединить звездочку и шаг (* / ИКС). Вы можете комбинировать диапазоны со списками и шаги с диапазонами, если вы используете числа. Другими словами, такие комбинации, как «джан-мар» или «вт, пт-вс» не допускаются.

В качестве альтернативы, вместо установки значения для каждого столбца, вы можете просто написать @weekly, @yearly, @monthly, @daily или @hourly в начале строки, а затем команду. Запланированные так, задачи будут запускаться при первой возможности, поэтому @weekly будет выполняться в полночь первого дня недели. Если вы хотите запустить задачу сразу после запуска системы (re), используйте команду @reboot.

В этом примере мы запланировали резервное копирование каждый день на 08:20 и 20:20. Обои меняются автоматически каждые три дня в 19:00, и скрипт проверяет наличие новых подкастов каждый понедельник в 10:20 и 20:20. Напоминание о дне рождения назначено на 25 марта и выполняется каждые 30 минут в течение указанного периода времени. Наконец, скрипт проверяет электронную почту каждые 15 минут с 8 до 20, но только в рабочие дни. Вы можете свободно организовать свой crontab с пробелами и табуляциями между столбцами, но не внутри них (не ставьте пробелы между запятыми, дефисами и косой чертой).

Если все это звучит слишком сложно, не волнуйтесь — вы всегда можете положиться на Интернет. Такие инструменты, как Crontab Generator , Crontab.guru и Corntab, помогут вам создавать задания cron, не зная синтаксиса crontab. Они показывают, когда задание будет выполнено следующим, и предоставляют шаблоны для часто используемых выражений. Crontab.guru — лучший из всех, потому что он позволяет вам протестировать синтаксис crontab в режиме реального времени, чтобы вы могли сразу увидеть, как ваши изменения повлияют на расписание.

Managing Crontabs

Once you’ve settled on a schedule and you know the job you want to run, you’ll need to put it somewhere your daemon will be able to read it.

As mentioned previously, a crontab is a special file that holds the schedule of jobs cron will run. However, these are not intended to be edited directly. Instead, it’s recommended that you use the command. This allows you to edit your user profile’s crontab without changing your privileges with . The command will also let you know if you have syntax errors in the crontab, while editing it directly will not.

You can edit your crontab with the following command:

This will open up your crontab in your user profile’s default text editor.

Note: On new CentOS 8 servers, the command will open up your user’s crontab with by default. is an extremely powerful and flexible text editor, but it can feel somewhat obtuse for users who lack experience with it.

If you’d like to use a more approachable text editor as your default crontab editor, you could install and configure as such.

To do so, install with :

When prompted, press and then to confirm that you want to install .

To set as your user profile’s default visual editor, open up the file for editing. Now that you’ve installed it, you can do so with :

At the bottom of the file, add the following line:

~/.bash_profile

This sets the environment variable to . is a Unix environment variable that many programs — including crontab — invoke to edit a file. After adding this line, save and close the file by pressing , , then .

Then reload so the shell picks up the new change:

Once in the editor, you can input your schedule with each job on a new line. Otherwise, you can save and close the crontab for now. If you opened your crontab with , the default CentOS 8 text editor, you can do so by pressing to make sure you’re in ’s command mode, then type and press .

Please note that, on Linux systems, there is another crontab stored under the directory. This is a system-wide crontab that has an additional field for which user profile each cron job should be run under. This tutorial focuses on user-specific crontabs, but if you wanted to edit the system-wide crontab, you could do so with the following command:

If you’d like to view the contents of your crontab, but not edit it, you can use the following command:

You can erase your crontab with the following command:

Warning: The following command will not ask you to confirm that you want to erase your crontab. Only run it if you are certain that you want to erase it.

This command will delete the user’s crontab immediately. However, you can include the flag to have the command prompt you to confirm that you actually want to delete the user’s crontab:

When prompted, you must enter to delete the crontab or to cancel the deletion.

Формат расписания

Формат общесистемного расписания

Формат пользовательского расписания

mm hh DD MM DW – время выполнения в формате: минута час деньмесяца месяц деньнедели. Любое поле может быть записано следующим образом:

  • * – любое значение
  • 1-7 – интервал значений от и до
  • 0-10,20,30,40,50 – перечисление значений и интервалов
  • */10 – итерация с шагом, т.е. 0,10,20…
  • 0-10/2 – в промежутке с шагом

Месяц и день_недели задаются номером или первыми тремя буквами названия.

Переменные окружения, которые влияют на выполнение команды:

  • LOGNAME – имя пользователя (изменить нельзя)
  • HOME – домашний каталог, в котором будет запущена программа (по умолчанию из /etc/passwd)
  • SHELL – командный интерпретатор, которому будет передана на выполнение команда (по умолчанию из /etc/passwd)
  • MAILTO – почтовый адрес для отправки результата выполнения (по умолчанию локальному пользователю)

Отключение уведомлений по почте от Crontab на Linux и Unix-подобных системах

Отключение отправки ошибок и вывода от задач cron

Для предотвращения отправки ошибок и вывода, добавьте любую из следующих строк в конец каждой задачи cron для перенаправления вывода в /dev/null.

>/dev/null 2>&1

ИЛИ

> /dev/null

ИЛИ

> /dev/null 2>&1 || true

Примеры задач cron

Отредактируйте/откройте ваши задачи cron, для этого наберите:

crontab -e

Добавьте строку >/dev/null 2>&1 для прекращения предупреждений по почте:

0 1 5 10 * /path/to/script.sh >/dev/null 2>&1

ИЛИ

0 1 5 10 * /path/to/script.sh > /dev/null

ИЛИ

0 * * * * /path/to/command arg1 > /dev/null 2>&1 || true

Сохраните и закройте файл.

Установка переменной MAILTO

Вы можете установить переменнюу MAILTO=»» в начале вашего файла crontab. Это также отключит предупреждения по почте. Отредактируйте/откройте ваш файл с задачами cron:

crontab -e

В самый верх этого файла добавьте:

MAILTO=""

Сохраните и закройте файл.

Как посмотреть список ежедневных заданий Cron

Просмотреть список ежедневных заданий cron можно с помощью следующей команды:

$ ls -la /etc/cron.daily/

total 72

drwxr-xr-x  2 root root  4096 Apr 24 20:46 .

drwxr-xr-x 96 root root  4096 May 19 17:12 ..

-rw-r--r--  1 root root   102 Feb  9  2013 .placeholder

-rwxr-xr-x  1 root root   376 Apr  4  2014 apport

-rwxr-xr-x  1 root root 15481 Apr 10  2014 apt

-rwxr-xr-x  1 root root   314 Feb 18  2014 aptitude

-rwxr-xr-x  1 root root   355 Jun  4  2013 bsdmainutils

-rwxr-xr-x  1 root root   256 Mar  7  2014 dpkg

-rwxr-xr-x  1 root root   372 Jan 22  2014 logrotate

-rwxr-xr-x  1 root root  1261 Sep 23  2014 man-db

-rwxr-xr-x  1 root root   435 Jun 20  2013 mlocate

-rwxr-xr-x  1 root root   249 Feb 17  2014 passwd

-rwxr-xr-x  1 root root  2417 May 13  2013 popularity-contest

-rwxr-xr-x  1 root root   214 Mar 27  2017 update-notifier-common

-rwxr-xr-x  1 root root   328 Jul 18  2014 upstart

Managing Cron Job Output

Because cron jobs are executed in the background, it isn’t always apparent that they’ve run successfully. Now that you know how to use the command and how to schedule a cron job, you can start experimenting with some different ways of redirecting the output of cron jobs to help you track that they’ve been executed successfully.

To append a scheduled command’s output to a log file, add to the end of the command followed by the name and location of a log file of your choosing, like this:

Let’s say you want to use cron to run a script but keep it running in the background. To do so, you could redirect the script’s output to an empty location, like which immediately deletes any data written to it. For example, the following cron job executes a PHP script and runs it in the background:

Настройка 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.30 во вторник:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

cron

Планировщик задач в Linux играет незаменимую роль в автоматизации администрирования операционной системы. Роль планировщика задач выполняет демон cron (crond — в некоторых дистрибутивах). Демон cron обычно запускается . После запуска, демон cron ежеминутно просматривает свои таблицы, в которых содержатся информация о периодичности запуска команд и запускает команды, когда значения полей  минута,  час, месяц и хотя бы одно из полей число и день_недели, совпадают с текущим временем. Основной конфигурационный файл демона cron — /etc/crontab:

cron:~#cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

В /etc/crontab задания выполняются с помощью команды run-parts, которая запускает скрипты и программы из указанных каталогов (/etc/cron.hourly, /etc/cron.daily и т.д.). Каждая строка запускает из соответствующего каталога задания ежечасно, ежедневно, еженедельно и ежемесячно, соответственно строкам сверху вниз

Обратите внимание, что все команды здесь запущены от имени пользователя root. Заметьте также, что crontab может содержать присваивания значений переменным shell, которые будут установлены перед запуском команды

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

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

/var/spool/cron — RedHat/var/spool/cron/crontabs — debian,ubuntu/var/spool/cron/tabs — SUSE

Каждая строка планировщика имеет следующий формат:

* * * * * {пользователь} выполняемая_команда
- - - - -
| | | | |
| | | | ----- День недели (0 - 7) (Воскресенье =0 или =7)
| | | ------- Месяц (1 - 12) (можно три буквы из названия месяца,
| | |                        регистр не имеет значения от jan до dec)
| | --------- День (1 - 31)
| ----------- Час (0 - 23)
------------- Минута (0 - 59)

В примере показан формат одной из строки таблицы, состоящий из 7 полей. Первые 5 полей  — это значения, задающие периодичность выполнения команды (расписание). 6-e поле присутствует только в таблицах /etc/crontab и др. расположенных в каталоге /etc/cron.d/. 7-е поле есть сама запускаемая команда. Командой может быть как простая команда, например, ls /proc >> /tmp/proc, или команда запуска написанного вами специального сценария. Со всей оставшаяся частью строки до символа перевода строки или символа %, будет выполнен вызов /bin/sh или другой оболочки, определенной в переменной SHELL в crontab. Знак процента (`%’ ) в команде (если он не экранирован обратной косой чертой (`\’ ) ) будет соответствовать символу перевода строки и все данные после первого `%’  будут посланы для команды на стандартный ввод.

Для указанных выше первых 5 полей, можно использовать звездочку (*), что означает все допустимые значения. Например, если поставить звёздочку в значении месяца, команда будет выполняться каждый месяц во время, указанное другими параметрами.

Дефис (-) между целыми числами обозначает диапазон чисел. Например, 1-4 означает целые числа 1, 2, 3 и 4.

Список значений, разделенных запятыми (,), обозначает перечень. Например, перечисление 3, 4, 6, 8 означает четыре указанных целых числа.

Косая черта (/) используется для определения шага значений. Если после диапазона указать /<целое_число>. Например, значение минут 0-59/2, определяет, что задание будет запущено каждую вторую минуту.

Вся оставшаяся часть строки до символа перевода строки или символа %, будет выполнен вызов /bin/sh или другой оболочки, определенной в переменной SHELL в crontab Знак процента (`%’ ) в команде (если он не экранирован обратной косой чертой (`\’ ) ) будет соответствовать символу перевода строки и все данные после первого `%’  будут посланы для команды на стандартный ввод.

Добавление команды в cron

Чтобы добавить задание cron из терминала можно использовать утилиту crontab. Для открытия временного файла с текущими заданиями этого пользователя выполните:

Все запланированные действия будут выполнятся от текущего пользователя, если вы хотите указать другого пользователя используйте опцию -u:

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

Каждая задача формируется следующим образом:

минута(0-59) час(0-23) день(1-31) месяц(1-12) день_недели(0-7) /полный/путь/к/команде

Чтобы подставить любое значение используйте звездочку «*». Первые пять параметров характеризуют время выполнения, а последний, это путь к команде или скрипту, который нужно выполнить

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

Сделайте скрипт исполняемым:

Самый простой пример как запускать cron каждую минуту. Вместо всех параметров ставим просто звездочку:

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

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

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

Чтобы чтобы настроить интервал выполнения более тонко можно использовать слеш (/) с помощью этого символа и звездочки можно указать шаг с которым будет выполнятся команда. Например, каждые пять минут:

Чтобы запустить cron каждые 10 минут используйте:

А для запуска cron каждые 30 минут:

Аналогичным образом задаются часы, например, выполнять скрипт только 6:00 и 18:00:

А вот запустить cron каждую секунду или раз в 30 секунд не получится. Минимальная единица времени в cron это минута. Но можно создать команду, которая будет запускаться раз в минуту и по 30 секунд спать и затем снова делать:

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

  • @reboot — при перезагрузке;
  • @yearly, @annually — раз в год (0 0 1 1 *);
  • @monthly — раз в месяц (0 0 1 * *);
  • @weekly — раз в неделю (0 0 * * 0);
  • @daily, @midnight — раз в день в полночь (0 0 * * *);
  • @hourly — раз в час (0 * * * *).

Когда настройка cron linux будет завершена, сохраните изменения и закройте файл. Для этого в Nano нажмите Ctrl+O для сохранения и Ctrl+X для закрытия редактора, а в Vim нажмите Esc и наберите :wq. Теперь новые задания Cron будут добавлены и активированы. Посмотреть как выполняется ваш Cron вы можете с помощью скрипта, который я привел выше либо в лог файле. Сервис cron пишет свои логи в стандартный журнал syslog. В Ubuntu они сохраняются в файле /var/log/syslog:

Если во время работы возникнут ошибки cron, они тоже будут здесь. Если же вам надо добавить задание Cron из какого либо скрипта, то вы всегда можете поместить свой скрипт в папку /etc/cron.d или /cron/hourly,… чтобы выполнять его когда надо, только не забудьте сделать скрипт исполняемым.

«Жду ваших указаний»

Мы подробно рассмотрели что нужно сделать, чтобы компьютер периодически
выполнял какие-то работы без нашего участия. А что, если нужно заставить его
выполнить какую-то работу только один раз. Например, выключиться в полночь или
еще что-нибудь в этом роде. Для таких случаев в Linux имеется еще один демон — atd,
который, так же как и crond, постоянно находится «на посту». В этом вы можете убедиться,
выполнив команду


 $ ps -ax | grep atd

Для того, чтобы задать работу этому демону, применяются команды at
и batch.

Команда at в простейшем случае запускается с единственным параметром —
временем выполнения задания:

 $ at TIME

После этого появляется следующее предупреждение:

 
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at>

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

job 4 at 2002-09-26 12:15   

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

Посмотрим теперь как правильно задать время выполнения вашего задания, то есть правила
формирования параметра TIME для команды at. В простейшем варианте указывается только час и минута
запуска задания, разделенные двоеточием: «hh:mm». Можно указывать время «в американском стиле»,
добавив после минут окончание AM (до полудня) или PM (после полудня). Если сегодня указанное время
уже прошло, задание будет выполняться завтра. Допускается прямо указать команде at, что задание
должно быть выполнено сегодня (at 10:00PM today) или завтра (at 10:00PM tomorrow).
Можно также указать дату выполнения задания в формате
MMDDYY, или MM/DD/YY, или DD.MM.YY. Допускается использовать название месяца с числовым указанием дня и
(необязательным) указанием года. При этом указание на время выполнения в течение заданного дня должно
стоять перед указанием даты, например at 10:00PM Jul 31. Можно также указать программе at,
что выполнение задания нужно повторить несколько раз. Для этого после указания времени добавляют количество
повторений с указанием через какой интервал (час, день, неделя или месяц) надо повторить задание. Например,
по команде at 10:00PM + 3 days задание будет выполняться в 10 вечера сегодня и еще в течение
3 дней в то же время. В общем, вариантов указания времени выполнения задания существует множество,
их полная спецификация приведена в файле /usr/sharedoc/at-3.1.8/timespec (цифры 3.1.8 обозначают версию утилиты
at и у вас могут быть другими).

Как и в случае с демоном crond, суперпользователь может лишить некоторых пользователей
права запускать команду at, прописав их имена в специальный файл /etc/at.deny,
либо же разрешить использовать at только тем пользователям, имена которых перечислены
в файле /etc/at.allow. Причем оболочка сначала ищет файл /etc/at.allow и, если он есть,
проверяет наличие вашего имени в нем. Второй файл уже не анализируется. Если же файла /etc/at.allow
не существует, проверяется /etc/at.deny, и вам разрешается выполнить at, если ваше имя в этом
файле не встречается. Если ни того, ни другого файла не существует, программу at может запускать
только суперпользователь. В Red Hat Linux по умолчанию создается пустой файл /etc/at.deny, то
есть давать задания демону atd могут все пользователи.

Кроме выполнения заданий в указанное время демон atd может выполнять какие-то работы
в периоды низкой загруженности системы. Задания на
этот случай формулируются с помощью утилиты batch и ждут своего часа в очереди. Когда
загрузка системы снизится до уровня, указанного параметром -l (задается
при запуске atd, по умолчанию равен 0.8),
задания из очереди запускаются на выполнение.

Инсталляция cron

Большинство дистрибутивов используют Vixie Cron и некоторые другие производные как дефолтную реализацию cron, и именно их мы будем рассматривать в этой статье

Кроме того, практически во всех дистрибутивах cron уже предустановлен, так как он является очень важной частью системы Linux. Хотя обычный пользователь, как правило, никогда не работает с ним напрямую, система и многие приложения используют cron (хорошим примером является периодическое обновление базы данных man-страниц)

Значимым исключением является Gentoo, где необходимо вручную установить vixie-cron и добавить его в runlevel по умолчанию. В Arch, Debian, Slackware, Ubuntu, Fedora и OpenSUSE cron установлен по умолчанию и автоматически запускается при загрузке системы. Мы надеемся, что вы изучите man-страницы cron и crontab, так как во многих дистрибутивах используются их пропатченные версии, что делается для лучшей интеграции программы под конкретный дистрибутив. Поэтому существует вероятность, что функция, которая имеется например в Gentoo, будет недоступна в Slackware. В любом случае, нет ничего лучше чтения man-страниц, особенно если имеешь дело с новой программой, которую собираешься достаточно часто использовать.

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

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

30 3 * * 2 /yourdirectory/myscript.pl

На более понятном простому пользователю языке тут обозначены: Минуты/Часы/ДеньМесяца/ДеньНедели/Команда. Данный пример означает, что в 3:30 ночи, каждый вторник, Сron должен запускать файл с названием youdirectory/myscript.pl.

Если перечислить значения через запятую, например в пункте «День» написать 2,4,6, то файл будет запускаться в указанное время каждый вторник, четверг и субботу.

Если задать значения через дефис, то задача будет исполняться в указанном интервале времени. Например, если в пункте «Часы» задать 3-7, то файл будет запускаться каждый час с 3 до 7 утра.

Также можно задать периодичность, написав в графе времени, например, в «Часы» /12. Тогда задача будет исполняться каждые 12 часов.

Важно знать, что «*» означает не отсутствие значения, а все возможные значения. То есть, если задать * * * * 1 /yourdirectory/myscript.pl, желая, чтобы файл запускался каждый понедельник, то это окажется совершенно неверным и файл будет запускаться каждую минуту

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

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: