---
name: "pexec"
section: "1"
platform: "linux"
package: "pexec"
version: "1.0~rc8-7"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/pexec"
---

# pexec(1)

executing commands in parallel

## NAME

pexec - executing commands in parallel

## SYNOPSIS

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

## DESCRIPTION

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

## OPTIONS

### General options:

- **-h**, **--help**

  Gives general summary about the command line options.

- **--long-help**

  Gives a detailed list of command line options.

- **--version**

  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).

### Logging:

- **-L**, **--log** \<file\>

  The name of the log file.

- **-W**, **--log-level** \<level\>

  The logging level.

- **-V**, **--verbose**

  Increase the log level by one.

## REPORTING BUGS

Report bugs to \<apal@szofi.elte.hu\>

## COPYRIGHT

Copyright © 2007, 2008-2009; Pal, Andras \<apal@szofi.elte.hu\>

This is free software. You may redistribute copies of it under the terms of the GNU General Public License \<http://www.gnu.org/licenses/gpl.html\>. 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: http://hatnet.hu. Another internal libraries (e.g. numhash.\[ch\]) were primarily written for other projects.

## SEE ALSO

The full documentation for **pexec** is maintained as a Texinfo manual.  If the **info** and **pexec** programs are properly installed at your site, the command

-

  **info pexec**

should give you access to the complete manual.
