crontab

Планирование периодической фоновой работы (POSIX)

Синтаксис:

crontab [-d каталог_cron] [-u пользователь] [файл] 
crontab [-d каталог_cron] [-e | -l | -r] [-u пользователь]

Опции:

-d каталог_cron
Местоположение каталога crontab.
-e
Редактировать пользовательскую запись crontab. Если опция -u не указана, то утилита crontab редактирует собственную запись. Если переменной среды EDITOR не определен другой редактор, используется vi.
-l
("эль") Вывести запись crontab для пользователя. Если опция -u не указана, то отображается запись пользователя, вызвавшего утилиту.
-r
Удалить запись пользователя crontab. Если опция -u не указана, то запись пользователя, вызвавшего утилиту, удаляется.
-u пользователь
Указать пользователя, для которого выполняется утилита crontab. При утверждении записи crontab новая запись заменяет или создает запись этого пользователя. При удалении (-r) или выводе (-l) существующих записей crontab, эта опция определяет, запись какого пользователя требуется удалить или вывести. Эта опция доступна только для пользователя root.
файл
Путь к файлу, содержащему настройки для записей crontab (формат настроек см. в разделе "Описание"). Если файл не указан, используется стандартный поток ввода crontab.

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

aarch64, arm, armv7, e2k, mips, ppc, x86

Описание:

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


Note: Для этой утилиты в полномочиях пользователя необходимо установить бит setuid ("set user ID" (установить идентификатор пользователя)). В случае использования утилит mkefs, mketfs или mkifs на хосте Windows для включения этой утилиты в образ необходимо задать атрибут perms для явного определения полномочий, а также атрибуты uid и gid для корректной настройки принадлежности.

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

Каждая указанная команда выполняется из основного каталога с использованием командного интерпретатора (/bin/sh). Утилита cron обеспечивает для командного интерпретатора среду по умолчанию путем определения значений HOME, LOGNAME, SHELL (=/bin/sh), PATH (=:/bin:/usr/bin) и TZ. Пользователи, которым требуется выполнить файл .profile, должны напрямую выполнить его в записи crontab.

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

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

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

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

0 0 1,15 * 1

Команда запускается в 00:00 на 1-й и 15-й день каждого месяца, а также каждый понедельник в 00:00. Для определения дней только в одном поле в другом поле необходимо ввести значение *. Пример.

0 0 * * 1

Команда выполняется только по понедельникам.

Шестое поле строки в записи crontab – это строка, выполняемая интерпретатором команд в определенное время. Символ % в этом поле (если он не замаскирован обратной косой чертой) преобразуется в символ newline (символ новой строки).

Интерпретатор команд выполняет только первую строку (до символа % или до конца строки) поля команды.

Примеры записей crontab

Вызов программы calendar ежедневно через 1 минуту после полуночи:

1 0 * * * calendar -

Просмотр фактического времени на системной консоли каждые 20 минут:

1,21,41 * * * * (echo -n " "; date; echo) > /dev/con1

Очистка рабочих каталогов UUCP каждый день недели в 5:30:

30 5 * * 1-5 /usr/lib/uucp/uuclean

Удаление всех файлов в каталоге /tmp, не измененных за последние 7 дней:

0 4 * * * find /tmp -mtime +7 -exec rm -f {} \;


Note: Для получения вывода команд перенаправьте его в файл.

Примеры:

Вывод собственной записи crontab:

crontab -l

Файлы:

При возникновении ошибки диагностическое сообщение записывается в стандартный поток ошибок.

Содержимое файлов crontab может считываться в стандартном потоке ввода при их создании (если не указаны опции -e, -l и -r) и если значение файл в командной строке не определено.

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

Утилит crontab использует следующие файлы, связанные с одним из файлов в каталоге /var/spool/cron или в каталоге, указанном в опции -d:

cron.allow
Если этот файл существует, он считывается утилитой crontab для определения списка идентификаторов пользователей, обладающих полномочиями на планирование заданий cron.
cron.deny
Если файл cron.allow не существует, то утилита crontab считывает этот файл для получения списка идентификаторов пользователей, НЕ обладающих полномочиями на планирование заданий cron.
crontabs/идентификатор_пользователя
Утилита crontab может создать, изменить, просмотреть или удалить этот файл.

Возвращаемое значение:

0
Завершено успешно.
>0
Возникла ошибка.

Предостережения:

При неосторожном вводе утилиты crontab без аргумента не следует использовать комбинацию клавиш Ctrl - D (конец файла), поскольку при этом файл crontab будет заменен пустым файлом. В этом случае необходимо завершить выполнение утилиты путем ввода символа прерывания. Как правило, для этого используется комбинация клавиш Ctrl - C.

Классификация:

Базовые подсистемы ЗОСРВ «Нейтрино», POSIX

Тематические ссылки:

cron




Предыдущий раздел: Утилиты