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