$ 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
3.2.2. Просмотр списка запланированных заданий
Для того чтобы просмотреть полный список запланированных заданий, введите команду at -l или atq:
$ atq
1. 1999-05-05 23:00 а
2. 1999-05-06 06:00 а
3. 1999-05-21 11:20 а
В первом столбце содержится идентификатор заданния, за ним следуют дата и время выполнения задания. В последнем столбце находится символ а, указывающий на то, что задание получено от команды at. Существует также команда batch, которая планирует выполнение задания в период наименьшей загруженности системы. Задания, полученные от этой команды, помечаются в выводе команды atq символом b.
Получив задание, команда at создает в каталоге /var/spoot/at файл, в который помещает текст задания и заносит текущие установки всех переменных среды:
$ pwd
/var/spool/at
$ ls
a0000200eb7ae4 a0000400ebd228 a0000800eb7ea4 spool
3.2.3. Удаление запланированного задания
Для удаления задания предназначена команда atrm (синоним команды at -d или at -r), имеющая следующий формат:
atrm номер_задания
Чтобы удалить задание, нужно сначала получить его идентификатор. Поэтому сначала введите команду at -1 и узнайте идентификатор интересующего вас задания, а затем выполните команду atrm:
$ at -l
1. 1999-05-05 23:00 а
2. 1999-05-06 06:00 а
3. 1999-05-21 11:20 а
$ atrm 3
$ at -l
2 1999-05-05 23:00 а
4 1999-05-21 11:20 а
3.3. Оператор &
При выполнении задания в экранном режиме происходит "захват" терминала на весь этот период. Перевод задания в фоновый режим позволяет освободить терминал для других целей. Чтобы выполнить команду в фоновом режиме, укажите после нее оператор &:
команда &
В таком режиме удобно выполнять команду find, посылать задания на принтер, сортировать записи больших списков с помощью Команды sort и т. д. Не переводите в фоновый режим те команды, которые требуют ввода информации пользователем, поскольку в этом случае работа команды будет приостановлена, а вы не узнаете об этом.
Недостаток выполнения команды в фоновом режиме заключается в том, что весь ее вывод по–прежнему направляется на терминал. По этой причине выходные потоки таких команд часто перенаправляют в файл с помощью следующей конструкции:
команда > выходной файл 2>&1 &
Данная конструкция задает переадресацию стандартных потоков вывода и ошибок в указанный файл.
При запуске задания в фоновом режиме на экране отображается номер соответствующего процесса. Впоследствии этот номер можно использовать как для уничтожения процесса с помощью команды kill, так и для перевода задания в экранный режим посредством команды fg.
3.3.1. Запуск команды в фоновом режиме
Выполним в фоновом режиме команду find, которая ищет в каталоге /etc файл srm.conf, и перенаправим ее вывод в файл find .dt
$ find /etc -name "srm.conf" — print > find .dt 2>&1 &
[1] 27015
Номер процесса в данном случае равен 27015. После завершения выполнения задания, когда вы в очередной раз нажмете клавишу [Return], на экране отобразится такое сообщение: