27_SH43-0144-00 (1038594), страница 95
Текст из файла (страница 95)
Кроме того,если в среде на основе UNIX на компьютере, выполняющем удаленные команды,в качестве оболочки регистрации не используется Korn, на компьютере,выполняющем rah, также не должна использоваться оболочка Korn. (rahопределяет наличие оболочки Korn на удаленном компьютере на основелокального ID).
Оболочка не должна выполнять никаких подстановок илиспециальной обработки строк в одинарных кавычках. Она должна оставить этустроку в точности как есть.Приложение D. Выдача команд нескольким серверам разделов баз данных459Дополнительная информация о команде rah (Run All Hosts - запуститьна всех хостах) (только для Solaris и AIX)Для улучшения производительности в больших системах возможности rahпозволяют использовать каскадный вызов.
Это означает, что rah будетпроверять, сколько узлов содержится в списке, и, если это число превышаетзаданное пороговое значение, построит подсписок узлов и пошлет этим узламрекурсивный вызов себя самой. На этих узлах рекурсивно вызываемая rah ведетсебя по тем же правилам, пока список не сократится настолько, чтобыиспользовать стандартную логику отправки команд всем (конечным) узламсписка. Значение этого порога задается переменной среды RAHTREETHRESH;по умолчанию оно равно 15.В системе с несколькими логическими узлами на одном физическом узле db2_allрекурсивно посылает вызов отдельным физическим узлам, которые затемпересылают его при помощи команды rsh другим логическим узлам на том жефизическом узле; это сокращает трафик между физическими узлами.
(Этоотносится только к команде db2_all, а не rah, поскольку rah всегда посылаетвызов только различным физическим узлам.)Синтаксис и семантика rah в этой версии практически не изменились посравнению с предыдущей версией (она поставляется вместе с продуктом подназванием rah.sh_old), кроме некоторых небольших ограничений относительнодопустимых опций:v Пользователь должен использовать в качестве оболочки ksh (kornshell). Еслипользователь работает с другой оболочкой, rah_tree выдаст предупреждение ине будет использовать каскадный вызов.v Префикс (’), запрашивающий эхо команды, не может быть учтен иигнорируется.v Если заданы обе опции < (все остальные) и > (заменить <> на индекс хоста),индекс хоста отличается от того, который использовала бы командаrah/db2_all баз каскадного вызова.Примечание: Подстановки () и ## должны работать так же, как и в старойверсии rah/db2_all.v Настоятельно рекомендуется сделать настройки ID пользователя на всехузлах в списке одинаковыми, например, текущий рабочий каталог, изкоторого выдается команда rah_tree или db2_tree, должен существовать навсех узлах; исполняемый файл rah_tree должен находиться в текущем (намомент выдачи команды rah_tree) $PATH на всех узлах; исполняемый файлrahwaitfor должен находиться по этому адресу и так далее.
Некоторыеразличия среды между узлами допустимы, но далеко не все.v Выполняемая команда не должна начинаться с символов -o, -b, -d или -x,так как rah_tree будет интерпретировать их как флаги.460Руководство администратора: Реализацияv При задании параллельного выполнения порядок, в котором хостывозвращают свой вывод, скорее всего, будет отличаться от порядка,генерируемого некаскадным вариантом rah, где вывод обычно возвращается впорядке, заданном списком.v При вызове rah_tree или db2_tree команда сравнивает число узлов назначенияс пороговым значением, как описано выше.
Значение этого порога можнозадать с помощью переменной среды:export RAHTREETHRESH=nnгде nn - любое положительное целое числоили оставить значение по умолчанию - 15.Префиксные последовательностиПрефиксная последовательность состоит из одного или более специальныхсимволов. Одна или несколько префиксных последовательностей вводятсянепосредственно перед символами команды без всяких пробелов между ними.Если нужно задать несколько последовательностей, их можно вводить в любомпорядке, но порядок символов в любой многосимвольной последовательностидолжен быть соблюден. При вводе любых префиксных последовательностейнеобходимо заключать всю команду вместе с ними в двойные кавычки, какпоказано в следующих примерах:v На платформах на основе UNIX:rah "};ps -F pid,ppid,etime,args -u $USER"v В системе Windows NT:rah "||db2 get db cfg for sample"Используются следующие префиксные последовательности:ПоследовательностьНазначение|Запускает команды последовательно в фоновом режиме.|&Запускает команды последовательно в фоновом режиме и завершаеткоманду после того, как выполнены все удаленные команды, даже есликакие-либо процессы еще выполняются.
Последнее может произойти,если, например, продолжает выполняться дочерний (на платформах наоснове UNIX) или фоновый (в Windows NT) процесс. В этом случаекоманда запускает отдельный фоновый процесс для получения любыхудаленных выходных данных, сгенерированных после завершениякоманды и записывает его обратно на исходный компьютер.Примечание: На платформах на основе UNIX при задании &производительность ухудшается, поскольку требуетсябольше команд rsh.Приложение D. Выдача команд нескольким серверам разделов баз данных461||Запускает команды параллельно в фоновом режиме.||&Запускает команды параллельно в фоновом режиме и завершаеткоманду после того, как будут выполнены все удаленные команды, какописано выше для случая |&.Примечание: На платформах на основе UNIX при задании &производительность ухудшается, поскольку требуетсябольше команд rsh.;Эквивалентна ||&.
Это альтернативная краткая форма.Примечание: На платформах на основе UNIX при задании ;производительность по сравнению с || ухудшается,поскольку требуется больше команд rsh.]Присоединяет спереди точечное выполнение профиля пользователяперед выполнением команды.Примечание: Доступна только на платформах на основе UNIX.}Присоединяет спереди точечное выполнение файла, указанного в$RAHENV (обычно .kshrc) перед выполнением команды.Примечание: Доступна только на платформах на основе UNIX.]}Присоединяет спереди точечное выполнение профиля пользователя и,вслед за этим, файла, указанного в $RAHENV (обычно .kshrc) передвыполнением команды.Примечание: Доступна только на платформах на основе UNIX.)Подавляет выполнение профиля пользователя и файла, указанного в$RAHENV.Примечание: Доступна только на платформах на основе UNIX.'Возвращает на компьютер вызов команды в виде эхо.<Посылает вызов всем компьютерам, кроме данного.<<−nnn<Посылает вызов всем серверам разделов баз данных, кроме nnn (всесерверы разделов баз данных в файле db2nodes.cfg кроме сервера сномером узла nnn, смотрите примечание ниже).<<+nnn<Посылает только серверу раздела базы данных nnn (сервер раздела базыданных в файле db2nodes.cfg с номером узла - nnn, смотритепримечание ниже).462Руководство администратора: РеализацияЗапускает удаленную команду в фоновом режиме с закрытыми stdin,stdout и stderr.
Эта опция действительна только при выполнениикоманды в фоновом режиме, то есть только в префикснойпоследовательности, включающей также | или ;. Она позволяетзавершить выполнение команды значительно быстрее (в моментинициации удаленной команды). Если задать этот префиксный символ вкомандной строке rah, следует также заключить команду в одинарныекавычки или же в двойные кавычки, поставив перед префикснымсимволом обратную косую черту.
Например,rah ';mydaemon'илиrah ";\ mydaemon"Команда rah, выполняемая как фоновый процесс, никогда не ждетвозврата каких-либо выходных данных.>Подставляет вместо <> имя компьютера."Подставляет вместо () индекс компьютера, а вместо ## - номер узла.Примечания:1.
Индекс компьютера - это число, связанное с компьютером в системебаз данных. Если вы не запускаете несколько логических узлов,индекс компьютера соответствует номеру узла для этогокомпьютера в файле конфигурации узлов. Чтобы получить индекскомпьютера в среде с несколькими логическими узлами, не следуетповторно учитывать те из них, где запущено несколько логическихузлов. Например, если на компьютере MACH1 работает двалогических узла, и на компьютере MACH2 - два логических узла,номер узла для компьютера MACH3 в файле конфигурации узловбудет 5.
Индекс компьютера для MACH3, однако, будет равен 3.В Windows NT файл конфигурации узлов редактировать нельзя.Чтобы получить индекс компьютера, используйте команду db2nlist.Подробности смотрите в книге DB2 Enterprise - Extended Edition forWindows Quick Beginnings.2. Если задан символ ", повторы не удаляются из списка компьютеров.Если нужно удалить повторы, смотрите раздел “Удалениеповторений из списка компьютеров” на стр.
464.При использовании префиксных последовательностей <<−nnn< и <<+nnn< nnn любой номер раздела из 1, 2 или 3 цифр, который должен совпадать созначением nodenum в файле db2nodes.cfg.Примечание: Префиксные последовательности рассматриваются как частькоманды. Если префиксная последовательность задана как частьПриложение D. Выдача команд нескольким серверам разделов баз данных463команды, всю команду вместе с префикснымипоследовательностями надо заключать в двойные кавычки.Задание списка компьютеровПо умолчанию список компьютеров берется из файла конфигурации узловdb2nodes.cfg.