Execute a command on another node or tty (QNX Neutrino)
on [-C cpunum] [-d] [-h] [-n|f nodename] [-P] [-p priority[policy]] [-R runmask] [-s] [-t tty] [-u user | -l user_name] [-W nsec] [-w device] [-Xsched_command] [command [args]]
Neutrino
Priorities are in the range from 0 through 255. Priority 0 is used for the idle thread; by default, priorities of 64 and greater are privileged, so only processes with an effective user ID of 0 (i.e. root) can use them. Non-root (and root) processes can use priorities from 1 through 63.
You can change the range of privileged priorities with the -P option for procnto.
The scheduling policy must be one of:
If you don't specify a command, the change applies to the parent process.
You can repeat the -w and -W options on the command line. They're processed in the order given, before any other options. |
This option was added in the QNX Neutrino Core OS 6.3.2.
The on utility extends the process creation abilities of the shell (sh). You can start a process on a remote node, on a different controlling terminal, in a HELD state for debugging or later synchronized starting.
If the -d option isn't specified, a network connection is created as a local agent for the remote child process. When the child terminates, the parent must do a wait() on the created connection to reap the zombie process entry for the child. If the -d option is specified, the command is detached from its parent. The parent isn't able to do a wait() for the child, nor is it able to control it via signals.
By default, the command is run in the current session. The -t option starts a new session, which means the command won't receive a SIGHUP if the current session leader terminates.
The on -t command becomes the new session leader on the tty specified, i.e. it receives SIGHUP generated by hangups on that tty. Any processes originally running on that tty don't get SIGHUP, and this condition persists even when the process started by on has terminated. For this reason, specify only ttys that aren't currently in use. |
On a multicore system, you can use a runmask to specify which processors a thread or process can run on. The default is all 1s (i.e. all CPUs).
The runmask is useful only on multiprocessor systems. |
You can use on to set the runmask and inherit mask for a new process; to change the masks for threads that are already running, use slay. Both commands interpret the -C and -R options in the same way.
You can use more than one -R option to specify a runmask that's more than 32 bits long. The first -R option specifies bits 0 through 31, the second specifies bits 32 through 63, and so on.
If you use both the -C and -R options or multiple instances of them, the resultant mask is the bitwise ORing of all -C and -R options. For example, on -R 0x1 is equivalent to on -C0, and on -R 0x1 -C3 is equivalent to on -C0 -C3. The on command sets the process's runmask and inherit mask to the same value.
For more information about runmasks, see the Multicore Processing chapter of the System Architecture guide, and the Developing Multicore Systems chapter of the Multicore Processing User's Guide.
Run login on console 2:
on -t con2 login
Run who on the node named ruth:
on -n ruth who
Run sort as an orphan on the node named peterv:
on -d -n peterv sort file.dat
Run who on node george with a new session, its standard I/O connected to console 1 on node ruth:
on -t /net/ruth/dev/con1 -n george who
The on utility exits with the exit status of command.
stat() in the Library Reference
Multicore Processing chapter of the System Architecture guide, the Multicore Processing User's Guide
Adaptive Partitioning User's Guide