crontab позволяет вам периодически выполнять команды через определенные промежутки времени с тем преимуществом, что вам нет необходимости входить в систему. crontab отправит вам письмо с отчетом о выполнении вашей команды. Вы можете указывать интервалы в минутах, часах, днях и даже месяцах. В зависимости от указанных опций, crontab будет работать по-разному:
Давайте начнем с редактирования crontab'а. Если вы
введете команду crontab -e, перед вами окажется ваш
любимый текстовый редактор, если у вас установлена переменная окружения
EDITOR или VISUAL, в противном
случае будет использован Vi. Строка в файле
crontab состоит из шести полей. Первые пять полей -
это интервалы времени в минутах, часах, днях месяца, месяцах и днях недели
соответственно. Шестое поле - это выполняемая команда. Строки, начинающиеся
с # - это комментарии, они будут проигнорированы
демоном crond (программой, отвечающей за выполнение заданий из
crontab). Этот формат несколько отличается для
системного crontab'а (файл
/etc/crontab). В нем в качестве шестого поля
выступает имя пользователя, которое будет использовано для запуска программы
из седьмого поля. Этот файл должен быть использован только для задач
администрирования и для запуска заданий пользователей, которые существуют
только для обеспечения безопасности системы (такие как пользователь демона
антивируса или пользователь для запуска сервера баз данных). Вот пример
файла crontab:
# Если вы не хотите получать почту, просто
# закомментируйте следующую строку
#MAILTO="ваш_электронный_адрес"
#
# Уведомление о новых изображениях каждые 2 дня в 14:00,
# из примера выше - после чего, выполнение "retouch"
# для файла "stamp". Знак "%" означает
# новую строку, это позволяет вам указывать несколько команд
# в одной строке.
0 14 */2 * * find /shared/images \
-cnewer /shared/images/stamp \
-a -iregex ".*\.jpe?g" \
-a -not -regex \
".*/old/.*"%touch /shared/images/stamp
#
# Воспроизведение мелодии на каждое Рождество :)
0 0 25 12 * mpg123 $HOME/sounds/merryxmas.mp3
#
# Каждый вторник в 17:00 вывод списка покупок...
0 17 * * 2 lpr $HOME/shopping-list.txt
Существует несколько способов указания интервалов, кроме тех, что показаны в
этом примере. Вы можете указать набор
дискретных
значений, разделенных запятыми (1,14,23)
или диапазон (1-15), или даже комбинировать их
(1-10,12-20), а можно и с некоторым шагом
(1-12,20-27/2). Теперь вашей задачей будет найти
полезные команды и поместить их в этот файл!
Возможно, вы хотели бы выполнить какую-нибудь команду в определенный день,
но не регулярно. Например, вам нужно напомнить себе о сегодняшней встрече в
18:00. Вы работаете в X, у вас установлен пакет
X11R6-contrib и вы хотели бы получить напоминание,
скажем, в 17:30 о том, что пора выходить. Тогда at - это то, что вам
нужно:
$ at 17:30 # Теперь перед вами приглашение "at" at> xmessage "Пора идти! Встреча в 18:00" # Нажмите CTRL-d для выхода at> <EOT> $
Указывать время можно разными способами:
now +<интервал>: означает сейчас + интервал (Не
обязателен. Отсутствие интервала означает немедленное выполнение). Синтаксис
для интервала:
<n>(minutes|hours|days|weeks|months). Здесь minutes
- минуты, hours - часы, days - дни, weeks - недели и months - месяцы.
Например, вы можете указать now + 1 hour (через один
час), now + 3 days (через трое суток) и так далее.
<time> <day>: полное
указание даты. Опция <time> (время) является
обязательной. Ее формат для at довольно свободный: вы, например,
можете ввести 0100, 04:20,
2am, 0530pm,
1800 или одно из трех специальных значений:
noon (полдень), teatime (время
вечернего чая в 16:00) или midnight (полночь). Опция
<day> (день) является необязательной. Вы также
можете указать ее различными способами: например,
12/20/2004, что соответствует двадцатому декабря 2004
года, или, по европейскому стандарту, 20.12.2004. Вы
можете не указывать год, но тогда допускается только европейская форма
записи: 20.12. Также вы можете записать месяц буквами:
и Dec 20, и 20 Dec будут верны.
Также at допускает использование разнообразных опций:
Как обычно, для получения дополнительной информации смотрите
страницу руководства для at(1).