For people who live life in the parallel lane.
is a shell tool for executing jobs in parallel using one
or more computers. A job can be a single command or a small script
that has to be run for each of the lines in the input. The typical
input is a list of files, a list of hosts, a list of users, a list of
URLs, or a list of tables. A job can also be a command that reads from
a pipe. GNU parallel
can then split the input and pipe it into
commands in parallel.
If you use xargs and tee today you will find GNU parallel very easy to
use as GNU parallel is written to have the same options as xargs. If
you write loops in shell, you will find GNU parallel may be able to
replace most of the loops and make them run faster by running several
jobs in parallel.
GNU parallel makes sure output from the commands is the same output as
you would get had you run the commands sequentially. This makes it
possible to use output from GNU parallel as input for other programs.
For each line of input GNU parallel will execute command with
the line as arguments. If no command is given, the line of input is
executed. Several lines will be run in parallel. GNU parallel can
often be used as a substitute for xargs or cat | bash.
can be found on the main GNU ftp server:
(via HTTP) and
(via FTP). It can also be found
on the GNU mirrors;
a mirror if possible.
Official packages exist for:
Community maintained packages:
Just like other GNU software
GNU parallel has documentation available online:
You can get a description of the
design decisions behind GNU parallel by
running man parallel_design.
You may also find more information about GNU parallel
by looking at /usr/doc/parallel/
or similar directories on your system.
Some short videos displaying the most common usage are available at:
The history of GNU parallel can be found
The package includes GNU
sem, GNU sql,
and GNU niceload.
When using GNU parallel for a publication please cite as per
has two mailing lists:
The main discussion list is
<firstname.lastname@example.org>, and is
used to discuss uses of GNU parallel. Subscribe
The discussion list
is used to discuss
enhancement requests, as well as bug reports. Your bug report should always include:
- The output of parallel --version. If you are not running the
latest released version you should specify why you believe the problem
is not fixed in that version.
- A complete example that others can run that shows the problem. A combination of seq, cat, echo, and sleep can reproduce most
errors. If you example requires large files, see if you can use make them by something like seq 1000000 > file.
and most other GNU software are made on
Subscribe at http://lists.gnu.org/mailman/listinfo/info-gnu.
and GNU in general, is a volunteer effort, and you can contribute. For
information, please read How to help GNU. If you'd
like to get involved, it's a good idea to join the discussion mailing
list (see above).
- Test releases
- Trying the latest test release (when available) is always
appreciated. Test releases of
can be found at
(via HTTP) and
- For development sources, bug and patch trackers, and other
information, please see the
- GNU parallel
is currently being maintained by
Ole Tange (http://ole.tange.dk).
Please use the mailing lists for contact.
You can show your support for GNU parallel using our merchandise.
is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your
option) any later version.
When using GNU parallel for a publication please cite:
O. Tange (2011): GNU Parallel - The Command-Line Power Tool, ;login: The USENIX Magazine, February 2011:42-47.