Чтобы поместить в очередь заданий планировщика 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]. Рассмотрим пример.