pexec(1) executing commands in parallel


pexec [options] [-c|-m] [--] command [arguments] | 'compound command'


Execute commands or shell scripts in parallel on a single host or on remote hosts using a remote shell.


General options:

-h, --help
Gives general summary about the command line options.
Gives a detailed list of command line options.
Gives some version information about the program.
-s, --shell <shell>
Full path (e.g. /bin/sh) of the shell or interpreter to be used for script execution.
-c, --shell-command
Use the specified shell to interpret the command(s) instead of direct execution.
-m, --multiple-command
Allow multiple individual shell command scripts to be executed in parallel with the variation of the parameters.
-e, --environment <variable>
Name of an environmental variable which is set to the respective parameter before each execution.
-n, --number <number>
The maximal number of processes running simultaneously. The <number> itself can even be a complex specification of remote hosts (see documentation for more details).
-C, --control <port>
The control port of a hypervisor daemon (full path of a UNIX socket or an INET host specification).
-p, --list <list>
The single-argument form of main parameter list.
-r, --parameters <list>
The multiple-argument form of the main parameter list.
-f, --listfile <file>
The main parameter list file.
-w, --column <index>
The column index from where the parameters should be taken if they are read from a parameter file.
-t, --complete
Threat the whole line as a single parameter if the parameters are read from a file.
-z, --nice
Sets the scheduling priority of pexec and all children (executed processes) to the priority defined by this nice value.
A marker after which the command to execute begins.

Redirecting standard input, output and error:

-i, --input <input>
The (optionally formatted) name of the input file which is used for redirecting the standard input.
-o, --output <output>
The (optionally formatted) name of the output file which is used for redirecting the standard output.
-u, --error <output>
The (optionally formatted) name of the output error file, which is used for redirecting the standard error.
-R, --normal-redirection
Equivalent to specifying --output -, --error - and --input /dev/null.
-a, --output-format <format>
The format of the final standard output redirection if the output of all of the processes are gathered into the same file.
-b, --error-format <format>
The same final redirection format for the standard error.
-x, --omit-newlines
Disable automatic newlines after the output and error formats.

Execution using remote hosts:

-g, --remote-shell <remote_shell>
The name or full path of the remote shell to be used for building the tunnel between the local and the peer host(s). Default: ``/usr/bin/ssh''.
-P, --pexec <pexec>
The full path of the pexec program on the remote hosts. If this option is omitted, pexec tries to figure out from the invoking syntax and/or the current path.
-T, --tunnel
Internal use only (pexec will start in tunnel daemon mode).

Remote control, mutual exclusions and atomic command execution:

-y, --bind <port>
This option lets pexec to be remote controlled via INET or UNIX domain sockets.
-E, --pexec-connection-variable <env>
This option overrides the default environment name PEXEC_REMOTE_PORT to the specified value, which is used by the ``-p|--connect auto'' combination to determine the control socket with which the running pexec instance can be controlled.
-j, --remote
Used to remote control and/or poll the status of other running instances of pexec.
-p, --connect <port>
Remote control port to connect to.
-t, --status
Prints the actual status of the running jobs in a human-readable form.
-l, --lock <mutex>
Locks the specified mutex (if the mutex is not locked by someone else, otherwise it will block until the mutex is released).
-u, --unlock <mutex>
Unlocks the specified mutex.
-m, --mutex <mutex>
Name of the mutex.
-d, --dump <filename>
Dump the content of the given file to standard output, if ``-m|--mutex'' is given, this will be atomic.
-s, --save <filename>
Save the content of standard input to the given file, if ``-m|--mutex'' is given, this will be atomic.
-a, --atomic <command>
Execute the given command. If ``-m|--mutex'' is given, the exectution is going to be atomic with respect to that mutex.

Hypervisor mode:

-H, --hypervisor
Starts pexec in hypervisor mode.
-C, --control <port>
The control port used by the hypervisor.
-l, --load <window>
Use load also to limit the number of simultaneous processes with the specified load average interval (0, 1 or 2, or 1min, 5min or 15min, respectively).
-f, --fifo
First in first out queue processing.
-s, --lifo
Last in first out (stack) queue processing (default).


-L, --log <file>
The name of the log file.
-W, --log-level <level>
The logging level.
-V, --verbose
Increase the log level by one.


Report bugs to <[email protected]>


Copyright © 2007, 2008-2009; Pal, Andras <[email protected]>

This is free software. You may redistribute copies of it under the terms of the GNU General Public License <>. There is NO WARRANTY, to the extent permitted by law.

This software was written by Andras Pal. The core part was written while working for the Hungarian-made Automated Telescope (HAT) project to make the data processing more easier and therefore find many-many extrasolar planets. See more information about this project: Another internal libraries (e.g. numhash.[ch]) were primarily written for other projects.