on

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

Синтаксис:

on [-C номер_ЦП] [-d] [-h] [-n|f имя_узла] [-P]

[-p приоритет[политика]] [-R процессорная_маска] [-s]

[-t терминал_ввода_вывода] [-u пользователь | -l имя_пользователя] [-W количество_секунд]

[-w устройство] [-Xкоманда_диспетчеризации] [команда [аргументы]]

Поддерживаемые платформы:

Neutrino

Опции:

-C номер_ЦП

(QNX Neutrino Core OS 6.3.2 и выше.) Установить привязку ЦП к номеру номер_ЦП, где первому ЦП задан номер "0". Эту опцию можно использовать многократно. Для получения дополнительной информации см. "Установка процессорной маски" далее.

-d

Отсоединить команду, указанную в аргументе команда, от родительского процесса (т.е. разорвать отношения родительский/порожденный элемент). Эту опцию целесообразно использовать для процессов, созданных удаленно, которые никогда не завершаются и для командного интерпретатора, соответственно, отсутствует необходимость их ожидания. Если эта опция не указана, создается сетевое соединение, соединяющее родительский и порожденный элементы.

-f имя_узла

Запустить с удаленного узла, используя его каталог / в качестве корня файловой системы.

-h

Запустить команду, указанную в аргументе команда, в состоянии HELD. Эту опцию целесообразно использовать для запуска программ с целью их отладки. Также можно запустить несколько команд в состоянии HELD, после чего отправить им сигнал запуска поскольку время загрузки для них устранено, все команды запустятся практически одновременно.

-l имя_пользователя

Войти в систему с указанным именем пользователя. Эта опция аналогична опции -u, но также устанавливает переменные среды LOGNAME, HOME и SHELL, устанавливает для утилиты umask значение 022 и осуществляет переход в каталог, указанный для пользователя в базе данных паролей.

-n имя_узла

Выполнить команду, указанную в аргументе команда, на удаленном узле с именем имя_узла.

-P

(QNX Neutrino 6.4.0 и выше.) Породить процесс, установив флаг SPAWN_PADDR64_SAFE для подтверждения безопасности 64-разрядной адресации для выполнения процесса либо отсутствия значимости местоположения физической памяти для процесса.

-p приоритет[политика]

Выполнить команду с заданным приоритетом, дополнительно изменив политику диспетчеризации.

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

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

Политика диспетчеризации может быть одной из следующих:
Если команда не указана, изменение применяется к родительскому процессу.

-R процессорная_маска

(QNX Neutrino Core OS 6.3.2 или выше.) Установить привязку ЦП к маске процессорная_маска. Эту опцию можно использовать многократно для установки масок, длина которых превышает 32 бита. Для получения дополнительной информации см. раздел "Установка процессорной маски" далее.

-s

Породить команду в новой группе процессов.

-t терминал_ввода_вывода

Открыть указанное имя терминала в виде файловых дескрипторов 0, 1 и 2 для команды, указанной в аргументе команда. команда выполняется в новом сеансе, в качестве управляющего терминала используется терминал_ввода_вывода (tty). Если значение терминал_ввода_вывода не содержит косой черты (/), то в начало добавляется /dev/.

-u идентификатор_пользователя[:идентификатор_группы [,идентификатор_группы,]]
-u имя_пользователя

Запустить с именем пользователя, определенным цифровым значением идентификатор_пользователя (uid), принадлежащим указанной группе или группам, или с указанным именем имя_пользователя.

-W количество_секунд

Количество секунд ожидания устройства, которое указано в следующей опции-w. Значение по умолчанию бесконечное ожидание.

-w устройство

Ждать успешного выполнения утилиты stat() на устройстве, указанном в аргументе устройство перед продолжением. Если значение устройство не содержит косую черту (/), то в начало добавляется /dev/.

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

-X команда_диспетчеризации

Запустить с использованием указанной команды для внешнего диспетчера. Возможные команды: Эта опция была добавлена в QNX Neutrino Core OS 6.3.2.

команда [аргументы]


Выполняемая команда и передаваемые ей аргументы.

Описание:

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

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

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

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

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

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

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

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

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

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

Для получения дополнительной информации о процессорных масках см. главы Multicore Processing ("Многопроцессорная обработка") в руководстве по системной архитектуре и Developing Multicore Systems ("Разработка многоядерных систем") в Руководстве системного программиста (администратора) КПДА.10964-01 32.

Примеры:

Выполнение утилиты 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 завершает работу со статусом завершения команды, указанной в аргументе команда.