Руководство FreeBSD
Пред. | Глава 12. Настройка и оптимизация | След.

# 12.6. Настройка утилиты `cron`

Предоставил Tom Rhodes.

Одна из наиболее полезных утилит FreeBSD это cron(8). Утилита `cron` работает в фоновом режиме и постоянно проверяет файл `/etc/crontab`. Утилита `cron` проверяет также каталог `/var/cron/tabs` в поиске новых файлов `crontab`. Файлы `crontab` содержат информацию об определенных функциях, которые `cron` выполняет в указанное время.

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

> Замечание: Пользовательские crontab позволяют индивидуальным пользователям планировать задачи без привилегий суперпользователя (`root`). Команды из crontab пользователя запускаются с привилегиями этого пользователя.

> Пользователь `root` может использовать собственный crontab, как и любой другой пользователь. Он будет отличаться от системного crontab `/etc/crontab`. Поскольку существует системный crontab, обычно не требуется создавать пользовательский crontab для `root`.

Давайте заглянем в файл `/etc/crontab` (системный crontab):

    # /etc/crontab - root's crontab for FreeBSD
    #
    # $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
    #
    #
    SHELL=/bin/sh
    PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
    HOME=/var/log
    #
    #
    #minute	hour	mday	month	wday	who	command
    #
    #
    */5	*	*	*	*	root	/usr/libexec/atrun

  Как и в большинстве файлов настройки FreeBSD, символы ''#'' означают комментарии. Комментарии нужны для напоминания о том, что означает строка и зачем она добавлена. Комментарии не могут находиться на той же строке, что и команда, или они будут восприняты как часть команды; располагайте их на новой строке. Пустые строки игнорируются.
  Сначала должны быть заданы переменные окружения. Знак равно (`=`) используется для задания переменных окружения, в этом примере `SHELL`, `PATH`, и `HOME`. Если переменная для оболочки не задана, `cron` использует оболочку по умолчанию, `sh`. Если не задана переменная `PATH`, значение по умолчанию не устанавливается и пути к файлам должны быть полными. Если не задана переменная `HOME`, `cron` будет использовать домашний каталог соответствующего пользователя.
  В строке всего семь полей. Их значения `minute`, `hour`, `mday`, `month`, `wday`, `who` (кто), и `command`. Значение полей почти очевидно. `minute` это время в минутах, когда будет запущена команда. `hour` означает то же самое для часов. `mday` означает день месяца. `month`, это то же самое, что час и минута, но для месяцев. Параметр `wday` это день недели. Все эти поля должны быть в числовом формате, время в двадцатичетырехчасовом исчислении. Поле `who` имеет специальное значение, и присутствует только в файле `/etc/crontab`. Это поле определяет пользователя, с правами которого должна быть запущена команда. Когда пользователь устанавливает собственный файл `crontab`, он не указывает этот параметр. Последний параметр `command`. Он указывает команду, которая должна быть запущена.
  Последняя строка определяет параметры, описанные выше. Здесь задано значение `*/5`, и несколько символов `*`. Эти символы `*` означают ''первый-последний'', и могут быть интерпретированы как каждый. Таким образом, для этой строки соответствующая команда `atrun` вызывается под пользователем `root` каждые пять минут независимо от дня или месяца. За дополнительной информацией по команде `atrun` обращайтесь к странице справочника atrun(8).

  Команды могут принимать любое количество параметров; однако команды, состоящие из нескольких строк, должны быть объединены символом ''\''.

Этот формат одинаков для каждого файла `crontab`, за исключением одной детали. Шестое поле, где указано имя пользователя, присутствует только в файле `/etc/crontab`. Это поле должно быть исключено из `crontab` файлов пользователей.

## 12.6.1. Установка crontab

> Важно: Вы не должны использовать процедуру, описанную здесь, для установки системного crontab. Просто используйте свой любимый текстовый редактор: утилита `cron` узнает о том, что файл изменился и сразу начнет использовать обновленную версию. Обратитесь к этой части FAQ за дальнейшей информацией.

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

    % crontab crontab-file

В этом примере, `crontab-file` это имя файла crontab, который только что был создан.

Существует также параметр для просмотра установленных файлов `crontab`: задайте `crontab` параметр `-l`.

Для пользователей, составляющих crontab вручную, без временного файла, существует параметр `crontab -e`. Она вызовет редактор с пустым файлом. Когда файл будет сохранен, `crontab` автоматически установит его.

Если позднее вы захотите полностью удалить свой `crontab`, используйте `crontab` с параметром `-r`.

Пред. | Начало | След.
Запуск сервисов | Уровень выше | Использование rc во FreeBSD 5.X и последующих версиях

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.