Harman Patil (Editor)

GNU parallel

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Developer(s)
  
GNU Project

Operating system
  
GNU

Written in
  
Perl

Type
  
Utility

GNU parallel

Stable release
  
20170222 / February 22, 2017; 14 days ago (2017-02-22)

Repository
  
git.savannah.gnu.org/cgit/parallel.git

GNU parallel is a command-line driven utility for Linux and other Unix-like operating systems which allows the user to execute shell scripts in parallel. GNU parallel is free software, written by Ole Tange in Perl. It is available under the terms of GPLv3.

Contents

Usage

The most common usage is to replace the shell loop, for example

to the form of

where the file list contains arguments for do_something and where process_output may be empty.

Scripts using parallel are often easier to read than scripts using pexec.

The program parallel features also

  • grouping of standard output and standard error so the output of the parallel running jobs do not run together;
  • retaining the order of output to remain the same order as input;
  • dealing nicely with filenames containing special characters such as space, single quote, double quote, ampersand, and UTF-8 encoded characters;
  • By default, parallel runs as many jobs in parallel as there are CPU cores.

    Examples

    The above is the parallel equivalent to:

    This searches in all files in the current directory and its subdirectories whose name end in .foo for occurrences of the string bar. The parallel command will work as expected unless a file name contains a newline. In order to avoid this limitation one may use:

    The above command uses the null character to delimit file names.

    The above command uses {} to tell parallel to replace {} with the argument list.

    The command above does the same as:

    however, the former command which uses find/parallel/cp is more resource efficient and will not halt with an error if the expansion of *.ogg is too large for the shell.

    References

    GNU parallel Wikipedia