./parallel/parallel, Build and execute shell commands in parallel

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]

Branch: CURRENT, Version: 20160822nb1, Package name: parallel-20160822nb1, Maintainer: cheusov

GNU Parallel is a shell tool for executing jobs in parallel using one or
more machines. A job is typically 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, or a list of tables.

Required to run:

Required to build:

Master sites: (Expand)

SHA1: eacae06b0e145559d9f9d2f027be5cfac28f76bf
RMD160: 6f56b1bca8f6f29fd712f2657cff9c44796bcb90
Filesize: 1338.522 KB

Version history: (Expand)

CVS history: (Expand)

   2018-08-22 11:48:07 by Thomas Klausner | Files touched by this commit (3558)
Log message:
Recursive bump for perl5-5.28.0
   2016-09-13 11:41:29 by Filip Hajny | Files touched by this commit (4) | Package updated
Log message:
Update parallel/parallel to 20160822

Upstream changes:


- Bug fixes and man page updates.


- env_parallel is now ready for wider testing. It is still beta

- env_parallel is heavily modified for all shells and testing has been

- Selectively choosing what to export using --env now works for
  env_parallel (bash, csh, fish, ksh, pdksh, tcsh, zsh).

- --round-robin now gives more work to a job that processes faster
  instead of same amount to all jobs.

- --pipepart works on block devices on GNU/Linux.

- Bug fixes and man page updates.


- $PATH can now be exported using --env PATH. Useful if GNU Parallel
  is not in your path on remote machines.

- If --block is left out, --pipepart will use a block size that will
  result in 10 jobs per jobslot.

- Bug fixes and man page updates.


- niceload --net pauses the program if the internet connection is

- Bug fixes and man page updates.


- :::+ and ::::+ work like ::: and :::: but links this input source to
  the previous input source in a --xapply fashion. Contrary to
  --xapply values do not wrap: The shortest input source determines
  the length.

- --line-buffer --keep-order now outputs continously from the oldest
  job still running. This is more what you would expect than the
  earlier behaviour where --keep-order had no effect with

- env_parallel supports tcsh, csh, pdksh. In fish it now supports
  arrays. In csh/tcsh it now supports variables, aliases, and arrays
  with no special chars. In pdksh it supports aliases, functions,
  variables, and arrays.

- Function exporting on Mac OS X works around old Bash version.

- Better CPU detection on OpenIndiana.

- Bug fixes and man page updates.


- env_parallel is a function that exports the environment (functions,
  aliases, variables, and arrays) to GNU Parallel. Run 'man
  env_parallel' for details.

- niceload --prg now searches for substrings if no process with the
  name is found.

- Bug fixes and man page updates.


- Bug fixes and man page updates.


- --sql DBURL uses DBURL as storage for jobs and output. It does not
  run any jobs so it requires at least one --sqlworker. DBURL must
  point to a table.

- --sqlworker DBURL gets jobs from DBURL and stores the result back to

- --sqlandworker is a shorthand for --sql and --sqlworker.

- --sqlworker requires the output of a single job to fit in memory.

- --results now also saves a file called 'seq' containing the sequence

- If $PARALLEL_ENV is a file, then that file will be read into

- man parallel_tutorial has been given an overhaul.

- --workdir now accepts replacementstrings.

- Bug fixes and man page updates.


- --transfer is now an alias for --transferfile {}.

- --transferfile works like --transfer, but takes an argument like
  --return. This makes it possible to combine transferring files
  with multiple input sources: parallel -S server --tf {1} wc {2}
  {1} ::: * ::: -l -w -c

- total_jobs() can now be used in {= =}: parallel echo job {#} of '{=
  $_=total_jobs() =}' ::: {1..50}

- Bug fixes and man page updates.


- Bug fixes and man page updates.


- --plus makes it possible to use {##} as a shorthand for
  {= $_=$Global::JobQueue->total_jobs() =} which gives the the number
  of jobs to run in total.

- {= $_=$Global::JobQueue->total_jobs() =} is incompatible with -X,
  -m, and --xargs.

- GNU Parallel is now mostly compatible with lsh
  (http://www.lysator.liu.se/~nisse/lsh/) and somewhat compatible with
  autossh (http://www.harding.motd.ca/autossh/).

- --workdir ... now also works when run locally.

- Bug fixes and man page updates.


- Bug fixes and man page updates.


- If $job->skip() is called in {= =} the job will not be run.

- @arg can now be used in {= =}: parallel echo '{= $arg[2] < 5 and
  $_="j" =}' ::: 1 2 3 ::: 4 5 6

- Bug fixes and man page updates.


- If a record fits in a block, --block only reads upto the size of
  --block. If not: --block reads a full --block more.

- Due to widely spread distributions still using --tollef even after a
  year of being retired following a year of being obsolete, --tollef
  now gives an error unless used with --gnu.

- --nice now uses a perl wrapper instead of the nice command.

- Bug fixes and man page updates.


- --halt has been rewritten completely. You can now combine
  percentages with success or fail. See the man page.

- Exit values 102..254 have been removed. 101 means more than 100 jobs

- Killing through --timeout, --memfree, or --halt is now done as a
  process group.

- --termseq determines which signals are sent when a job is killed.

- An empty argument would previously cause no string to be
  inserted. This is now changed to '' being inserted, thus prepending
  a space to the output of: parallel echo {} b ::: ''

- $PARALLEL_ENV can now be set to an environment prepending the
  command. Used in env_parallel as mentioned in the manpage.

- --retry-failed will retry all failed jobs in a joblog. It will
  ignore any command given.

- --ssh and $PARALLEL_SSH can be used to set the command used for
  ssh. The command is assumed to behave the same way as ssh.

- --fifo now works in csh, too.

- Q(...) can be used in {= =} to shell quote a string.

- Bug fixes and man page updates.


- Security: The security issue for --sshlogin + --fifo/--cat has been
  fixed. Thereby all issues with
  http://lists.gnu.org/archive/html/paral … 00045.html
  have been fixed.

- Security: After further security analysis the issue fixed in
  20150422 also fixed the problem for --tmux.

- Bug fixes and man page updates.


New in this release:

- Security fix. An attacker on the local system could make you
  overwrite one of your own files with a single byte. The problem
  exist when you use --compress or --tmux or --pipe or --cat or
  --fifo. The attacker must figure out the randomly chosen file name
  and create a symlink within a time window of 15 ms.

- --shuf will generate all jobs, and shuffle them before running
  them. This is useful to get a quick preview of the results before
  running the full batch.

- Bug fixes and man page updates.


New in this release:

- --number-of-cores respects 'taskset' on GNU/Linux.

- --joblog --pipe gives the data send and received in the log.

- Bug fixes and man page updates.


- --tmux has gotten a major overhaul.

- Bug fixes and man page updates.


- Remote jobs now send stderr (standard error) to stderr (standard
  error) instead of stdout (standard output).

- Remote execution command is now packed using base64 encoded
  bzip2. This means that big environments (app. 100 KB) can be
  transferred. This change makes remote execution alpha quality.

- --semaphoretimeout now takes a negative value. This means give up if
  the semaphore is not gotten within the timeout.

- --halt -1 and -2 now means halt if a job succeeds (so the opposite
  of 1 and 2).

- --no-keep-order will reverse --keep-order.

- Bash's second fix of shellshock caused --env to break again when
  exporting functions. This has been fixed again.

- A semibig refactoring of big functions. All non-trivial functions
  are now less than 100 lines. The refactoring makes this release beta

- A description of the design decisions for GNU Parallel can be found
  in 'man parallel_design'.

- A bug fix in replacement strings caused rewrite of the replacement
  function. This makes use of replacement strings alpha quality.

- Bug fixes and man page updates.


- Remote systems can be divided into hostgroups (e.g. web and db) by
  prepending '@groupname/' to the sshlogin. Multiple groups can be
  given by separating groups with '+'. E.g. @web/www1 @web+db/www2

- Remote execution can be restricted to servers that are part of one
  or more groups by '@groupname' as an sshlogin. Multiple groups can
  be given by separating groups with '+'. E.g. -S @web or -S @db+web

- With --hostgroup you can restrict arguments to certain hostgroups by
  appending '@groupname' to the argument.  Multiple groups can be
  given by separating groups with '+'. E.g. my_web_arg@web
  db-or-web-arg@db+web db-only-arg@db Thanks to Michel Courtine for
  developing a prototype for this.

- Bug fixes and man page updates.


- --env was changed to deal with Bash's new way of exporting a function.

- Bug fixes and man page updates.


- If the file give as --sshloginfile is changed it will be re-read
  when a job finishes though at most once per second. This makes it
  possible to add and remove hosts while running.


- GNU Parallel now uses the same shell it was started from as the
  command shell for local jobs. So if GNU Parallel is started from
  tcsh it will use tcsh as its shell even if the login $SHELL is
  different. For remote jobs the login $SHELL will be used.

- The whole current environment in bash can be copied by using a shell
  wrapper function (Search manual for env_parallel).

- --plus adds the replacement strings {+/} {+.} {+..} {+...} {..}
  {...} {/..} {/...}. The idea being that '+foo' matches the opposite
  of 'foo' and {} = {+/}/{/} = {.}.{+.} = {+/}/{/.}.{+.} = {..}.{+..}
  = {+/}/{/..}.{+..} = {...}.{+...} = {+/}/{/...}.{+...}

- GNU Parallel now deals correctly with the combination
  rsync-3.1.X-client and rsync-2.5.7-server

- Bug fixes and man page updates.


- {= perl expression =} can be used as replacement string. The
  expression should modify $_. E.g. {= s/\.gz$// =} to remove .gz from
  the string. This makes replacement strings extremely flexible.

- Positional perl expressions (similar to {2}) are given as {=2 perl
  expression=} where 2 is the position.

- One small backwards incompatibility: {1}_{2} will replace {2} with
  the empty string if there is only one argument. Previously {2} would
  have been left untouched.

- Replacement strings can be defined using --rpl. E.g. parallel --rpl
  '{.gz} s/\.gz$//' echo {.gz} ::: *.gz

- The parenthesis around {= perl expression =} can be changed with

- --tmux will direct the output to a tmux session instead of
  files. Each running jobs will be in its own window.

- --halt 10% will stop spawning new jobs if 10% failed so far.

- Bug fixes and man page updates.


- --shebang and --shebang-wrap now works on FreeBSD.

- --pipepart works with --header, --regexp, --cat and --fifo.

- ./configure --disable-documentation will not build documentation.

- {%} works as job slot.

- Bug fixes and man page updates.


- Use --semaphoretimeout to ignore the semaphore lock after a while.

- {%} introduced as job slot replacement string. It has known bugs.

- --slotreplace changes slot replacement string.

- Bug fixes and man page updates.


- --pipepart is a highly efficient alternative to --pipe if the input
  is a real file and not a pipe.

- If using --cat or --fifo with --pipe the {} in the command will be
  replaced with the name of a physical file and a fifo respectively
  containing the block from --pipe. Useful for commands that cannot
  read from standard input (stdin).

- --controlmaster has gotten an overhaul and is no longer

- --env is now copied when determining CPUs on remote system. Useful
  for copying $PATH if parallel is not in the normal path.

- --results now chops the argument if the argument is longer than the
  allowed path length.

- Build now survives if pod2* are not installed.

- Bug fixes and man page updates.


- Bug fixes and man page updates.


- --tollef has been retired.

- --compress has be redesigned due to bugs.

- Format of --eta and --joblog has changed slightly.

- Bug fixes and man page updates.


- Bug fixes and man page updates.


- GNU Parallel now has a motto: For people who live life in the
  parallel lane.

- Detect if the buffer dir $TMPDIR runs out of space. This changes a
  central piece of code, making this release alpha quality.

- --keep-order --(n)onall will sort according to the sshlogin.

- Detect the number of CPUs on DEC Tru64.

- GNU sql: --list-tables for sqlite3.

- Bug fixes and man page updates.


- A citation notice is printed on stderr only if stderr is a terminal,
  the user has not specified --no-notice and the user has not run
  --bibtex once. This makes the release alpha quality.

- --compress will compress temporary files. If the output is big and
  very compressible this will take up less disk space in $TMPDIR and
  possibly be faster due to less disk I/O.

- --compress-program comtrols which program to use for compressing
  temporary files.

- --bar show progress as a progress bar compatible with zenity.

- --resume can now be used with --result: Jobs already run will be

- --transfer and --basefile support paths relative to the --workdir by
  inserting /./ into the path.

- Bug fixes and man page updates.


- --transfer files with /./ in the path will copy the files relative
  to the --workdir.

- The maximal command length is now cached in a file halfing the
  startup time.

- Bug fixes and man page updates.


- PDF-files of documentation is now included.

- Bug fixes and man page updates.


- A tutorial showing much of GNU Parallel's functionality. Spend an
  hour walking through the tutorial. Your commandline will love you
  for it. man parallel_tutorial

- --line-buffer will buffer output on line basis. --group keeps the
  output together for a whole job. --ungroup allows output to mixup
  with half a line coming from one job and half a line coming from
  another job. --line-buffer fits between these two; it prints a full
  line, but will allow for mixing lines of different jobs.

- --record-env records all variables and functions set. Useful to
  record the normal environment before using --env _.

- --env _ exports all functions and variables to the remote server
  except for the ones recorded.

- New signing key. Due to recommendations from NIST
  http://www.keylength.com/en/4/ the signing key was changed from
  1024D/ID:FFFFFFF1 to 9888R/ID:88888888.

- Bug fixes and man page updates.


- --round-robin with --pipe will write all blocks to already running

- --env can now transfer Bash function for remote execution. That is
  pretty cool!

- Quite a few bug fixes and man page updates.


- --xapply now recycles arguments if an input source has more
  arguments than others.

- The sleep time between jobs is now both increased and decreased

- 10 seconds installation check the signature using GnuPG if GnuPG is

- Bug fixes and man page updates.


- --ctrlc is now default if --pipe is not used; thus making it
  possible to kill remotely started jobs simply by pressing Ctrl-C.

- --timeout 200% now means kill jobs that take more than twice the
  time of the median run time of a job.

- Jobs are now distributed round robin when having mulitiple
  --sshlogin instead of filling up one --sshlogin at a time.

- niceload: darwin version of --io --mem --swap. Thanks to Anders F

- Bug fixes and man page updates.


- 10 seconds installation: wget -O - pi.dk/3 | sh

- HPUX CPU/core detection. Thanks to Javier Tarradas.

- CPU detection for HURD, IRIX, SCO OpenServer and (old) HPUX.

- --ctrlc will send SIGINT to tasks running on remote computers and
  thus killing them.

- --load now uses 'ps' to see immediately see the number of running
  processes instead of 'uptime' thus making --load react much faster.

- Testing on Centos 3.9 and FreeBSD 7 revealed a lot of compability
  bugs. Some of these required quite extensive changes making this
  release beta quality.

-  --retries works with --onall.

- The new --load computation now works on FreeBSD 7.

- --nice works under tcsh.

- Bug fixes and man page updates.


- --resume works with --pipe.

- --resume-failed will go through --joblog, redo the failed jobs and
  then continue like --resume.

- Negative positional arguments count from the end: {-1} means the
  last argument, {-2} the second to last.

- NetBSD CPU detection.

- --blocksize increases exponentially if it smaller than a full

- Processing n-line records (--pipe -L n) is now much faster.

- --tollef is obsoleted after discussion on the mailing list.

- Bug fixes and man page updates.
   2016-07-09 08:39:18 by Thomas Klausner | Files touched by this commit (1068) | Package updated
Log message:
Bump PKGREVISION for perl-5.24.0 for everything mentioning perl.
   2015-11-03 00:46:13 by Alistair G. Crooks | Files touched by this commit (19)
Log message:
Add SHA512 digests for distfiles for parallel category

Existing SHA1 digests verified, all found to be the same on the
machine holding the existing distfiles (morden).  Existing SHA1
digests retained for now as an audit trail.
   2015-06-12 12:52:19 by Thomas Klausner | Files touched by this commit (3152)
Log message:
Recursive PKGREVISION bump for all packages mentioning 'perl',
having a PKGNAME of p5-*, or depending such a package,
for perl-5.22.0.
   2014-05-30 01:38:20 by Thomas Klausner | Files touched by this commit (3049)
Log message:
Bump for perl-5.20.0.
Do it for all packages that
* mention perl, or
* have a directory name starting with p5-*, or
* depend on a package starting with p5-
like last time, for 5.18, where this didn't lead to complaints.
Let me know if you have any this time.
   2013-06-16 23:46:35 by Thomas Klausner | Files touched by this commit (2)
Log message:
Fix build with perl-5.18.
   2013-05-31 14:42:58 by Thomas Klausner | Files touched by this commit (2880)
Log message:
Bump all packages for perl-5.18, that
a) refer 'perl' in their Makefile, or
b) have a directory name of p5-*, or
c) have any dependency on any p5-* package

Like last time, where this caused no complaints.