next up previous contents
Next: Система управления заданиями PBS Up: lxfarm2 Previous: Программное обеспечение   Contents


Выполнение заданий в фоновом режиме

У пользователей могут встречаться задания, длительность исполнения которых составляет несколько часов или даже дней. Такие задания неудобно выполнять в интерактивном режиме: во-первых, для этого нужно все это время держать открытой интерактивную сессию, во-вторых, в случае даже кратковременного разрыва связи между локальным компьютером пользователя и удаленной машиной, на которой исполняется задание, выполнение этого задания будет прервано. В подобной ситуации гораздо удобнее запускать задание в фоновом режиме.

Для выполнения заданий в фоновом режиме можно воспользоваться командой 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.


Vladimir Tikhomirov 2006-05-29