3.2.1. Запуск команд и сценариев с помощью команды at
3.2.1. Запуск команд и сценариев с помощью команды at
Текст задания можно передать команде at двумя способами: в файле или в режиме командной строки at. Если задание состоит из одной команды или двух — трех команд, объединенных каналом, то удобнее воспользоваться вторым способом. Для запуска сценариев интерпретатора shell предпочтительнее первый вариант.
В случае необходимости выполнить одиночную команду вызовите команду at, указав требуемое время. Отобразится приглашение at>. Введите свою команду, а затем нажмите [Enter] и [Ctrl+D]. Рассмотрим пример.
$ at 21:10
at> find / -name "passwd" — print
at> <EOT>
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 утра
Если необходимо запустить с помощью команды at файл сценария, укажите его имя после опции -f, как это сделано ниже:
$ at 3.00pm tomorrow -f /apps/bin/db_table.sh
warning: commands will be executed using /bin/sh job 8 at 1999-05-06 15:00
Сценарий db_table.sh будет выполнен завтра в 15:00. Передать задание команде at позволяет также команда echo? $ echo find /etc -name "passwd" — print | at now +1 minute