on

Выполнение команды на другом узле или tty

Синтаксис:

on [-C номер_ЦП] [-d] [-h] [-n|f имя_узла] [-P] [-p приоритет[политика]] [-R процессорная_маска] [-s] [-t терминал_ввода_вывода] [-u пользователь | -l имя_пользователя] [-W количество_секунд] [-w устройство] [-Xкоманда_диспетчеризации] [команда [аргументы]]

Опции:

-C номер_ЦП
Установить привязку ЦП к номеру номер_ЦП, где первому ЦП задан номер 0. Эту опцию можно использовать многократно. Для получения дополнительной информации см. "Установка процессорной маски" далее.
-d
Отсоединить команду, указанную в аргументе команда, от родительского процесса (т.е. разорвать отношения родительский/порожденный элемент). Эту опцию целесообразно использовать для процессов, созданных удаленно, которые никогда не завершаются и для командного интерпретатора, соответственно, отсутствует необходимость их ожидания. Если эта опция не указана, создается сетевое соединение, соединяющее родительский и порожденный элементы.
-f имя_узла
Запустить с удаленного узла, используя его каталог / в качестве корня файловой системы (производится поиск исполняемого файла на удаленном узле). Так, при указанной опции -n производит поиск исполняемого файла на локальном узле.
-h
Запустить команду, указанную в аргументе команда, в состоянии HELD. Эту опцию целесообразно использовать для запуска программ с целью их отладки. Также можно запустить несколько команд в состоянии HELD, после чего отправить им сигнал запуска – поскольку время загрузки для них устранено, все команды запустятся практически одновременно.
-l имя_пользователя
Войти в систему с указанным именем пользователя. Эта опция аналогична опции -u, но также устанавливает переменные среды LOGNAME, HOME и SHELL, устанавливает для утилиты umask значение 022 и осуществляет переход в каталог, указанный для пользователя в базе данных паролей.
-n имя_узла
Выполнить команду, указанную в аргументе команда, на удаленном узле с именем имя_узла (производится поиск исполняемого файла на локальном узле).
-P
Породить процесс, установив флаг SPAWN_PADDR64_SAFE для подтверждения безопасности 64-разрядной адресации для выполнения процесса либо отсутствия значимости местоположения физической памяти для процесса.
-p приоритет[политика]
Выполнить команду с заданным приоритетом, дополнительно изменив политику диспетчеризации.

Приоритеты находятся в диапазоне от 0 до 255. Приоритет с номером 0 используется для незанятого потока. По умолчанию приоритеты с номерами более 64 относятся к категории привилегированных и могут использоваться только процессами с нулевым эффективным идентификатором пользователя (т.е. root). Приоритеты от 1 до 63 доступны процессам с идентификатором пользователя root и с идентификатором, отличным от root.

Диапазон привилегированных приоритетов можно изменить с помощью опции -P для утилиты procnto.

Политика диспетчеризации может быть одной из следующих:
f
FIFO;
r
циклическая;
s
спорадическая;
o
другая (в настоящее время то же, что и циклическая).

Если команда не указана, изменение применяется к родительскому процессу.
-R процессорная_маска
Установить привязку ЦП к маске процессорная_маска. Эту опцию можно использовать многократно для установки масок, длина которых превышает 32 бита. Для получения дополнительной информации см. раздел "Установка процессорной маски" далее.
-s
Породить команду в новой группе процессов.
-t терминал_ввода_вывода
Открыть указанное имя терминала в виде файловых дескрипторов 0, 1 и 2 для команды, указанной в аргументе команда. команда выполняется в новом сеансе, в качестве управляющего терминала используется терминал_ввода_вывода (tty). Если значение терминал_ввода_вывода не содержит косой черты (/), то в начало добавляется /dev/.
-u идентификатор_пользователя[:идентификатор_группы[,идентификатор_группы,...]]
-u имя_пользователя
Запустить с именем пользователя, определенным цифровым значением идентификатор_пользователя (uid), принадлежащим указанной группе или группам, или с указанным именем имя_пользователя.
-W количество_секунд
Количество секунд ожидания устройства, которое указано в следующей опции -w. Значение по умолчанию – бесконечное ожидание.
-w устройство
Ждать успешного выполнения утилиты stat() на устройстве, указанном в аргументе устройство перед продолжением. Если значение устройство не содержит косую черту (/), то в начало добавляется /dev/.

Note: Опции -w и -W можно повторить в командной строке. Они обрабатывается в указанном порядке, до обработки других опций.

-X команда_диспетчеризации
Запустить с использованием указанной команды для внешнего диспетчера. Возможные команды:
aps=имя_раздела
запустить приложение в адаптивном разделе с указанным именем. Для получения дополнительной информации см. «Руководство системного программиста (администратора)» КПДА.10964-01
команда [аргументы]
Выполняемая команда и передаваемые ей аргументы.

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

aarch64, arm, armv7, e2k, mips, ppc, x86

Описание:

Утилита on расширяет возможности создания процессов командным интерпретатором ( sh). Процесс можно запустить на удаленном узле, на другом управляющем терминале, в состоянии HELD для отладки или последующего синхронизированного запуска.

Если опция -d не указана, то сетевое подключение создается в качестве локального агента для удаленного порожденного процесса. По завершении работы порожденного процесса, родительский процесс должен выполнить функцию wait() в отношении созданного сетевого подключения, чтобы освободить порожденный процесс - "зомби". Если опция -d указана, команда отсоединяется от родительского процесса. Родительский процесс не в состоянии выполнить функцию wait() для порожденного процесса и не может управлять им при помощи сигналов.

По умолчанию команда выполняется в текущем сеансе. Опция -t начинает новый сеанс, что означает, что команда не получит SIGHUP в случае завершения работы лидера текущего сеанса.


Caution: Команда on -t становится новым лидером сеанса на указанном терминале ввода-вывода, т.е. получает SIGHUP, генерируемый при завершении соединения на данном терминале ввода-вывода. Любые первоначально запущенные на этом терминале ввода-вывода процессы не получают SIGHUP, и это условие продолжает существовать даже после завершения работы процесса, который запущен утилитой on. По этой причине можно указывать только терминалы ввода-вывода, которые не используются в настоящее время.

Установка процессорной маски

В многоядерной системе можно использовать процессорную маску для определения процессора, на котором будет выполняться поток или процесс. Значение по умолчанию – "все 1" (т.е. все ЦП).


Note: Процессорную маску целесообразно использовать только на многопроцессорных системах.

Утилиту on можно использовать для установки процессорной маски или маски наследования для нового процесса; для изменения масок уже запущенных потоков необходимо использовать утилиту slay. Обе команды одинаково интерпретируют опции -C и -R.

Для установки процессорной маски длиной более 32 битов можно использовать несколько опций -R. Первая опция -R задает биты от 0 до 31, вторая – от 32 до 63 и т.д.

Если опции -C и -R используются совместно или указываются в нескольких экземплярах, то полученная маска является результатом побитовой операции ИЛИ для всех опций -C и -R. Например, on -R 0x1 эквивалентно on -C 0, а on -R 0x1 -C 3 эквивалентно on -C 0 -C 3. Команда on устанавливает для процессорной маски и маски наследования процесса одинаковые значения.

Для получения дополнительной информации о процессорных масках см. главу «Многопроцессорная обработка» документа «Описание применения. Часть 1. Системная архитектура» КПДА.10964-01 и главу «Разработка многоядерных систем» документа «Руководство системного программиста (администратора)» КПДА.10964-01.

Примеры:

Выполнение утилиты login на консоли 2:

on -t con2 login

Выполнение утилиты who на узле 3:

on -n 3 who

Выполнение утилиты sort в качестве порожденного процесса без родительского на узле с именем peterv:

on -d -n peterv sort file.dat

Выполнение утилиты who на узле 7 с новым сеансом, стандартный ввод/вывод утилиты подключен к консоли 1 на узле 3:

on -t //3/dev/con1 -n7 who

Возвращаемое значение:

Утилита on завершает работу со статусом завершения команды, указанной в аргументе команда.

Классификация:

Базовые подсистемы ЗОСРВ «Нейтрино»

Тематические ссылки:

nice, sh, slay




Предыдущий раздел: Утилиты