#(davecron installed on Tue Kay 4 13:07:43 1999)
#вывод текущей даты на экран
#каждые 15 минут между 18:00 и 6:00
0,15,30,45 18-06 * * * /bin/echo "date" > /dev/console
Вот как легко можно создать резервную копию crontab–файла в своем начальном каталоге:
$ crontab -1 > $HOME/davecron
Для добавления, редактирования или удаления записей в crontab–файле используется тот редактор, который указан в переменной среды editor. Чтобы отредактировать файл, выполните команду
$ crontab -e
При сохранении файла программа cron проверяет значения полей и информирует пользователя об обнаруженных ошибках. Если какая-либо запись содержит ошибку, файл не будет принят.
В процессе редактирования crontab–файла можно добавлять в него новые записи. Добавим, например, следующую запись:
• удаление файлов дампа в 3.30 утра в 1–й, 7–й, 14–й,
• 21–й и 2б–й день каждого месяца
30 3 1,7,14,21,26 * * /bin/find -name "core" — exec rm {} \;
Желательно размещать перед каждой записью комментарий, объясняющий ее назначение.
Теперь сохраним файл, выйдем из редактора и проверим результат:
$ crontab -1
#(davecron installed on Tue May 4 13:07:43 1999)
#вывод текущей даты на экран
#каждые 15 минут между 18:00 и 6:00
0,15,30,45 18-06 * * * /bin/echo "date" > /dev/console
#удаление файлов дампа в 3.30 утра в 1–й, 7–й, 14–й,
#21–й и 26–й день каждого месяца
30 3 1,7,14,21,26 * * /bin/find -name "core" — exec rm {} \;
Для удаления своего crontab–файла введите команду $ crontab -r
Если crontab–файл случайно удален, инсталлируйте заново исходный файл из вашего начального каталога:
$ crontab <имя_файла>
Именно по этой причине в документации к программе cron говорится о том, что не рекомендуется прибегать к непосредственному редактированию crontab–файла. Следует вносить все изменения в копию файла и инсталлировать ее заново.
3.2. Команда at
Команда at позволяет передавать задания демону cron для одноразового выполнения в назначенное время. Выдавая задание, команда at сохраняет в отдельном файле как его текст, так и все текущие переменные среды. Заметим, что команда crontab не делает этого. По умолчанию все результаты выполнения задания направляются пользователю в виде электронного сообщения.
Как и в случае с программой cron, пользователь root может контролировать, кому разрешено или запрещено выполнять команду at. Соответствующие списки пользователей содержатся в файлах at.allow и at.deny, находящихся в каталоге /etc.
Базовый формат команды at таков:
at [-f файл] [-l -d -m] время
Опция
Назначение
-f файл
Список заданий должен быть взят из указанного файла
-l
Вывод на экран списка заданий, которые ожидают выполнения; аналогична команде atq
-d
Удаление задания с указанным номером; аналогична команде atrm (в некоторых системах заменяется опцией -r)
-m
Выдача пользователю электронного сообщения о завершении задания
время
Спецификация времени, когда будет выполнено задание. Эта спецификация может быть довольно сложной. Допускается указание не только времени в формате часы: минуты, но и даты, а также многочисленных ключевых слов, таких как названия дней недели, месяцы, наречий today (сегодня), tomorrow (завтра), now (сейчас) и др. Наиболее удобна запись вида now + 3 hours (через три часа).
Текст задания можно передать команде at двумя способами: в файле или в режиме командной строки at. Если задание состоит из одной команды или двух — трех команд, объединенных каналом, то удобнее воспользоваться вторым способом. Для запуска сценариев интерпретатора shell предпочтительнее первый вариант.
В случае необходимости выполнить одиночную команду вызовите команду at, указав требуемое время. Отобразится приглашение at>. Введите свою команду, а затем нажмите [Enter] и [Ctrl+D]. Рассмотрим пример.
$ at 21:10
at> find / -name "passwd" — print
at>
warning: commands will be executed using /bin/sh job 1 at 1999-05-05 21:10
Запись <ЕОТ> появляется после нажатия [Ctrl+D]. Теперь в 21:10 будет выполнена команда find, ищущая в системе файлы с именем passwd. Обратите внимание на то, что команда at присваивает заданию уникальный идентификатор 1. Результаты выполнения команды find будут направлены вам по электронной почте. Вот фрагмент соответствующего электронного сообщения:
Subject: Output from your job 1
/etc/passwd
/etс/pam.d/passwd
/etc/uucp/passwd
/tmp/passwd
/root/passwd
/usr/bin/passwd
/usr/doc/uucp-1.06.1/sample/passwd
Ниже приведены примеры корректного указания времени при вызове команды at:
at 6.45am May 12 — 12–го мая в 6:45 утра
at 11.10pm — в 23:10 (сегодня или завтра, если
это время уже прошло)
at now + 1 hour — через час at 9am tomorrow — завтра в 9:00 утра
at 15:00 May 24 — 24 мая в 15:00 at 4am + 3 days — через 3 дня в 4:00 утра