Выбрать главу

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

$ crontab davecron

Копия файла будет помещена в каталог /var/spool/cron, а имя копии совпадет с вашим регистрационным именем (в данном случае — dave).

3.1.5. Вывод на экран содержимого crontab–файла

Для вывода на экран содержимого crontab–файла предназначена команда crontab -class="underline"

$ crontab -l

#(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

3.1.6. Редактирование crontab–файла

Для добавления, редактирования или удаления записей в 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 {} \;

3.1.7. Удаление crontab–файла

Для удаления своего crontab–файла введите команду $ crontab -r

3.1.8. Восстановление утерянного crontab–файла

Если 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 (через три часа).

3.2.1. Запуск команд и сценариев с помощью команды at

Текст задания можно передать команде at двумя способами: в файле или в режиме командной строки at. Если задание состоит из одной команды или двух — трех команд, объединенных каналом, то удобнее воспользоваться вторым способом. Для запуска сценариев интерпретатора shell предпочтительнее первый вариант.

В случае необходимости выполнить одиночную команду вызовите команду at, указав требуемое время. Отобразится приглашение at>. Введите свою команду, а затем нажмите [Enter] и [Ctrl+D]. Рассмотрим пример.