Для выполнения заданий в фоновом режиме можно воспользоваться командой at. Аргументами этой команды являются имя файла задания, где записаны команды, которые необходимо исполнить, а также момент времени, когда задание начнет выполняться. Важно: Задание выполняется на том же компьютере, на котором была исполнена команда at. Таким образом, на ферме Lxfarm это - UI компьютеры. Количество заданий, одновременно выполняемых на UI компьютере, как в интерактивном режиме, так и запущенных командой at, никак не ограничено, поэтому задания на UI компьютерах могут конкурировать между собой. Об этом необходимо помнить и стараться запускать задания на менее загруженных компьютерах, учитывая также их относительную мощность.
Файл задания (bscript в нашем примере) в простейшем случае
может состоять из одной строки с обращением к выполняемой программе:
program
где program - имя выполняемой программы с указанием полного пути
к ней, если это необходимо.
Запустить такой командный файл bscript
можно следующим образом:
at -f bscript time
где time - желаемое время запуска. Простейшие примеры
формата времени time таковы: ключевое слово now означает,
что необходимо запустить командный файл немедленно, а, например,
19:40 - в ближайшие 19 часов 40 минут. Формат задания времени
time можно посмотреть в справочной странице команды at.
Напомним, что текущее время в системе выдается командой date.
Отметим, что в момент начала исполнения задания текущим каталогом становится тот, в котором находился пользователь в момент выполнения команды at. Заметим также, что файл задания не обязательно должен иметь атрибут права доступа x.
Поскольку задание выполняется в фоновом режиме, то пользователь
должен позаботиться о потоках ввода-вывода, т.е. о том, как передать
необходимые программе данные, которые в интерактивном режиме вводятся
с клавиатуры, и куда будет направлен поток, который в интерактивном режиме
выводится на экран. Допустим, исполняемая программа scitrd требует
ввода с клавиатуры последовательно трех строк:
1 10.
RNDM 346781
10000
Тогда файл bscript может выглядеть так:
(echo ``1 10.''; echo ``RNDM 346781''; echo ``10000'') | scitrd
Другой способ: создать файл, скажем, scitrd.inp, прописать в нем
три строки с входными параметрами, а в файле задания bscript написать:
scitrd <scitrd.inp
Выходной поток и поток ошибок, которые в интерактивном режиме выводятся
на экран, команда at по окончании работы пересылает пользователю
по e-mail в почтовый ящик того компьютера, с которого она была запущена.
Пользователь может перенаправить эти потоки в дисковый файл, скажем,
с именем scitrd.out, написав в bscript:
scitrd <scitrd.inp >&scitrd.out
Необходимо однако понимать, что в данном примере в файл scitrd.out
будет направлен только выходной поток собственно программы scitrd.
Если ошибка произошла до или после выполнения программы, скажем, не был
найден выполняемый файл scitrd, то сообщение о такой ошибке все
же будет направлено по e-mail. Посмотрите раздел ,
чтобы настроить свою электронную почту на ферме.
С помощью команды atq
можно узнать о состоянии своих заданий, направленных на
исполнение командой at. При необходимости можно удалить
задание - команда atrm.