From 87b9d9fe29312a0df5621fedc77a46a57fa2500b Mon Sep 17 00:00:00 2001 From: Ole Tange Date: Wed, 23 May 2018 01:07:40 +0200 Subject: [PATCH] Released as 20180522 ('GreatMarchOfReturn') --- NEWS | 33 +++ README | 12 +- configure | 20 +- configure.ac | 2 +- doc/release_new_version | 3 + packager/obs/home:tange/parallel/.osc/_files | 10 +- .../home:tange/parallel/.osc/parallel.spec | 2 +- .../obs/home:tange/parallel/parallel.spec | 2 +- src/niceload | 2 +- src/parallel | 2 +- src/sql | 2 +- testsuite/Makefile | 1 - testsuite/tests-to-run/parallel-polarhome.sh | 15 +- testsuite/wanted-results/parallel-polarhome | 24 ++ testsuite/wanted-results/parallel-tutorial | 261 ++++++++++++++---- 15 files changed, 299 insertions(+), 92 deletions(-) diff --git a/NEWS b/NEWS index 4e6e1e86..73f2d79c 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,36 @@ +20180522 + +* --tty allows for more programs accessing /dev/tty in parallel. Some + programs require tty access without using it. + +* env_parallel --session will record names in current environment in + $PARALLEL_IGNORED_NAMES and exit. It is only used with env_parallel, + and can work like --record-env but in a single session. + +* 35 day course: Linux shell scripting and text processing for big + data https://comquest.in/training + +* How To Use Your Entire CPU In Bash With Parallel + https://bash-prompt.net/guides/parallell-bash/ + +* An easy way to run parallel jobs on Stampede2 + https://blog.uta.edu/xus/2017/09/29/an-easy-way-to-run-parallel-jobs-on-stampede2/ + +* Get more done at the Linux command line with GNU Parallel + https://opensource.com/article/18/5/gnu-parallel + +* Save Time with Modern Search Techniques + https://www.sans.org/summit-archives/file/summit-archive-1524582079.pdf + +* GNU Parallel: haz más cosas simultáneamente en el terminal + https://blog.desdelinux.net/gnu-parallel-haz-mas-cosas-simultaneamente-en-el-terminal/ + +* 「今日から使い切る」ための GNU Parallelによる並列処理入門 + https://www.slideshare.net/koji_matsuda/gnu-parallel + +* Bug fixes and man page updates. + + 20180422 * --csv makes GNU Parallel parse the input sources as CSV. When used diff --git a/README b/README index 7a08c861..fa3a0426 100644 --- a/README +++ b/README @@ -44,9 +44,9 @@ document. Full installation of GNU Parallel is as simple as: - wget https://ftpmirror.gnu.org/parallel/parallel-20180422.tar.bz2 - bzip2 -dc parallel-20180422.tar.bz2 | tar xvf - - cd parallel-20180422 + wget https://ftpmirror.gnu.org/parallel/parallel-20180522.tar.bz2 + bzip2 -dc parallel-20180522.tar.bz2 | tar xvf - + cd parallel-20180522 ./configure && make && sudo make install @@ -55,9 +55,9 @@ Full installation of GNU Parallel is as simple as: If you are not root you can add ~/bin to your path and install in ~/bin and ~/share: - wget https://ftpmirror.gnu.org/parallel/parallel-20180422.tar.bz2 - bzip2 -dc parallel-20180422.tar.bz2 | tar xvf - - cd parallel-20180422 + wget https://ftpmirror.gnu.org/parallel/parallel-20180522.tar.bz2 + bzip2 -dc parallel-20180522.tar.bz2 | tar xvf - + cd parallel-20180522 ./configure --prefix=$HOME && make && make install Or if your system lacks 'make' you can simply copy src/parallel diff --git a/configure b/configure index d96bc183..0c763df6 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for parallel 20180422. +# Generated by GNU Autoconf 2.69 for parallel 20180522. # # Report bugs to . # @@ -579,8 +579,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='parallel' PACKAGE_TARNAME='parallel' -PACKAGE_VERSION='20180422' -PACKAGE_STRING='parallel 20180422' +PACKAGE_VERSION='20180522' +PACKAGE_STRING='parallel 20180522' PACKAGE_BUGREPORT='bug-parallel@gnu.org' PACKAGE_URL='' @@ -1214,7 +1214,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures parallel 20180422 to adapt to many kinds of systems. +\`configure' configures parallel 20180522 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1281,7 +1281,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of parallel 20180422:";; + short | recursive ) echo "Configuration of parallel 20180522:";; esac cat <<\_ACEOF @@ -1357,7 +1357,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -parallel configure 20180422 +parallel configure 20180522 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1374,7 +1374,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by parallel $as_me 20180422, which was +It was created by parallel $as_me 20180522, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2237,7 +2237,7 @@ fi # Define the identity of the package. PACKAGE='parallel' - VERSION='20180422' + VERSION='20180522' cat >>confdefs.h <<_ACEOF @@ -2880,7 +2880,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by parallel $as_me 20180422, which was +This file was extended by parallel $as_me 20180522, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -2942,7 +2942,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -parallel config.status 20180422 +parallel config.status 20180522 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 7dacbfd2..cb5a1b00 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([parallel], [20180422], [bug-parallel@gnu.org]) +AC_INIT([parallel], [20180522], [bug-parallel@gnu.org]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([ diff --git a/doc/release_new_version b/doc/release_new_version index e5ab1894..95dabee8 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -220,6 +220,9 @@ https://bash-prompt.net/guides/parallell-bash/ https://blog.uta.edu/xus/2017/09/29/an-easy-way-to-run-parallel-jobs-on-stampede2/ https://opensource.com/article/18/5/gnu-parallel + + +GNU Parallel: haz más cosas simultáneamente en el terminal https://blog.desdelinux.net/gnu-parallel-haz-mas-cosas-simultaneamente-en-el-terminal/ https://www.sans.org/summit-archives/file/summit-archive-1524582079.pdf diff --git a/packager/obs/home:tange/parallel/.osc/_files b/packager/obs/home:tange/parallel/.osc/_files index d156c14b..cb50ba63 100644 --- a/packager/obs/home:tange/parallel/.osc/_files +++ b/packager/obs/home:tange/parallel/.osc/_files @@ -1,6 +1,6 @@ - - - - - + + + + + diff --git a/packager/obs/home:tange/parallel/.osc/parallel.spec b/packager/obs/home:tange/parallel/.osc/parallel.spec index b53e0d4e..9e3b5126 100644 --- a/packager/obs/home:tange/parallel/.osc/parallel.spec +++ b/packager/obs/home:tange/parallel/.osc/parallel.spec @@ -1,6 +1,6 @@ Summary: Shell tool for executing jobs in parallel Name: parallel -Version: 20180422 +Version: 20180522 Release: 1.2 License: GPL Group: Productivity/File utilities diff --git a/packager/obs/home:tange/parallel/parallel.spec b/packager/obs/home:tange/parallel/parallel.spec index b53e0d4e..9e3b5126 100644 --- a/packager/obs/home:tange/parallel/parallel.spec +++ b/packager/obs/home:tange/parallel/parallel.spec @@ -1,6 +1,6 @@ Summary: Shell tool for executing jobs in parallel Name: parallel -Version: 20180422 +Version: 20180522 Release: 1.2 License: GPL Group: Productivity/File utilities diff --git a/src/niceload b/src/niceload index cddd180c..f6280305 100755 --- a/src/niceload +++ b/src/niceload @@ -24,7 +24,7 @@ use strict; use Getopt::Long; $Global::progname="niceload"; -$Global::version = 20180423; +$Global::version = 20180522; Getopt::Long::Configure("bundling","require_order"); get_options_from_array(\@ARGV) || die_usage(); if($opt::version) { diff --git a/src/parallel b/src/parallel index e1bac6c7..98062d6f 100755 --- a/src/parallel +++ b/src/parallel @@ -1450,7 +1450,7 @@ sub check_invalid_option_combinations { sub init_globals { # Defaults: - $Global::version = 20180423; + $Global::version = 20180522; $Global::progname = 'parallel'; $Global::infinity = 2**31; $Global::debug = 0; diff --git a/src/sql b/src/sql index 7f7b3537..0427cc17 100755 --- a/src/sql +++ b/src/sql @@ -576,7 +576,7 @@ $Global::Initfile && unlink $Global::Initfile; exit ($err); sub parse_options { - $Global::version = 20180423; + $Global::version = 20180522; $Global::progname = 'sql'; # This must be done first as this may exec myself diff --git a/testsuite/Makefile b/testsuite/Makefile index ce44b1dc..fac5781f 100644 --- a/testsuite/Makefile +++ b/testsuite/Makefile @@ -20,7 +20,6 @@ polarhome: polar true polar: ../src/parallel tests-to-run/*polar* wanted-results/*polar* prereqlocal - make stopvm time bash Start.sh polar NONE || true touch ~/.parallel/will-cite diff --git a/testsuite/tests-to-run/parallel-polarhome.sh b/testsuite/tests-to-run/parallel-polarhome.sh index f60cdbab..d278cc2e 100644 --- a/testsuite/tests-to-run/parallel-polarhome.sh +++ b/testsuite/tests-to-run/parallel-polarhome.sh @@ -1,18 +1,23 @@ #!/bin/bash # Check servers up on http://www.polarhome.com/service/status/ +unset TIMEOUT +. `which env_parallel.bash` +env_parallel --session + P_ALL="alpha tru64 hpux-ia64 syllable pidora raspbian solaris openindiana aix hpux qnx debian-ppc suse solaris-x86 mandriva ubuntu scosysv unixware centos miros macosx redhat netbsd openbsd freebsd debian dragonfly vax ultrix minix irix hurd beaglebone cubieboard2" P_NOTWORKING="vax alpha openstep" P_NOTWORKING_YET="ultrix irix" P_WORKING="openbsd tru64 debian freebsd redhat netbsd macosx miros centos unixware pidora ubuntu scosysv raspbian solaris-x86 aix mandriva debian-ppc suse solaris hpux openindiana hpux-ia64" -P_WORKING="openbsd tru64 debian redhat netbsd macosx miros centos unixware pidora scosysv raspbian solaris-x86 aix mandriva debian-ppc suse solaris hpux hurd freebsd" -P_TEMPORARILY_BROKEN="minix dragonfly ubuntu openindiana hpux-ia64 beaglebone cubieboard2" +P_WORKING="openbsd tru64 debian redhat netbsd macosx miros centos unixware pidora scosysv raspbian solaris-x86 aix mandriva debian-ppc suse solaris hpux hurd freebsd ubuntu" +P_TEMPORARILY_BROKEN="minix dragonfly openindiana hpux-ia64 beaglebone cubieboard2" P="$P_WORKING" POLAR=`parallel -k echo {}.polarhome.com ::: $P` S_POLAR=`parallel -k echo -S 1/{}.polarhome.com ::: $P` + # 2018-04-22 TIMEOUT=20 TIMEOUT=25 RETRIES=4 @@ -23,6 +28,9 @@ doit() { # Avoid the stupid /etc/issue.net banner at Polarhome: -oLogLevel=quiet PARALLEL_SSH="ssh -oLogLevel=quiet" export PARALLEL_SSH + export TIMEOUT + export RETRIES + echo TIMEOUT=$TIMEOUT RETRIES=$RETRIES copy() { # scp, but atomic (avoid half files if disconnected) @@ -105,8 +113,7 @@ doit() { par_nonall 'start=2; env_parset var1,var2,var3 seq \$start ::: 2 3 4; echo $var1,$var2,$var3' 2>&1 } -. `which env_parallel.bash` -env_parallel -u --env _ -Sredhat.p doit ::: 1 +env_parallel -u -Sredhat.p doit ::: 1 # eval 'myfunc() { echo '$(perl -e 'print "x"x20000')'; }' # env_parallel myfunc ::: a | wc # OK diff --git a/testsuite/wanted-results/parallel-polarhome b/testsuite/wanted-results/parallel-polarhome index 1c446809..2e896068 100644 --- a/testsuite/wanted-results/parallel-polarhome +++ b/testsuite/wanted-results/parallel-polarhome @@ -1,3 +1,4 @@ +TIMEOUT=25 RETRIES=4 ### Copy commands to servers Done copying aix.polarhome.com ### Test if empty command in process list causes problems @@ -34,6 +35,8 @@ suse.polarhome.com ### Test if empty command in process list causes problems suse.polarhome.com OK_with_empty_cmd tru64.polarhome.com ### Test if empty command in process list causes problems tru64.polarhome.com OK_with_empty_cmd +ubuntu.polarhome.com ### Test if empty command in process list causes problems +ubuntu.polarhome.com OK_with_empty_cmd unixware.polarhome.com UX:sh (/bin/sh): ERROR: -f: is not an identifier aix.polarhome.com Works on aix7 centos.polarhome.com Works on centos.polarhome.com @@ -53,6 +56,7 @@ solaris-x86.polarhome.com Works on solaris-x86 solaris.polarhome.com Works on solaris suse.polarhome.com Works on suse tru64.polarhome.com Works on tru64.polarhome.com +ubuntu.polarhome.com Works on ubuntu unixware.polarhome.com Works on unixware.polarhome.com unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found aix.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: The file access permissions do not allow the specified action. at /home/t/tange/bin/parallel line 0000 @@ -94,6 +98,8 @@ suse.polarhome.com OK tru64.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable tru64.polarhome.com at /home/t/tange/bin/parallel line 0000 tru64.polarhome.com OK +ubuntu.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000. +ubuntu.polarhome.com OK unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found unixware.polarhome.com UX:env: ERROR: No such file or directory: bash @@ -117,6 +123,7 @@ solaris-x86.polarhome.com bash only A solaris.polarhome.com bash only A suse.polarhome.com /home/t/tange/bin/bash: func: command not found tru64.polarhome.com bash only A +ubuntu.polarhome.com bash only A unixware.polarhome.com UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 1: `(' unexpected ### Does PARALLEL_SHELL help exporting a bash function not kill parallel @@ -138,6 +145,7 @@ solaris-x86.polarhome.com bash only B solaris.polarhome.com bash only B suse.polarhome.com bash only B tru64.polarhome.com bash only B +ubuntu.polarhome.com bash only B unixware.polarhome.com bash only B ### env_parallel echo :::: <(echo OK) @@ -314,6 +322,16 @@ tru64.polarhome.com /home/t/tange/.profile tru64.polarhome.com /home/t/tange/.cshrc tru64.polarhome.com /home/t/tange/.tcshrc tru64.polarhome.com install-OK +ubuntu.polarhome.com Installed env_parallel in: +ubuntu.polarhome.com /home/t/tange/.bashrc +ubuntu.polarhome.com /home/t/tange/.shrc +ubuntu.polarhome.com /home/t/tange/.zshenv +ubuntu.polarhome.com /home/t/tange/.config/fish/config.fish +ubuntu.polarhome.com /home/t/tange/.kshrc +ubuntu.polarhome.com /home/t/tange/.profile +ubuntu.polarhome.com /home/t/tange/.cshrc +ubuntu.polarhome.com /home/t/tange/.tcshrc +ubuntu.polarhome.com install-OK unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found unixware.polarhome.com UX:env: ERROR: No such file or directory: bash aix.polarhome.com env_parallel run-OK @@ -334,6 +352,7 @@ solaris-x86.polarhome.com env_parallel run-OK solaris.polarhome.com env_parallel run-OK suse.polarhome.com env_parallel run-OK tru64.polarhome.com env_parallel run-OK +ubuntu.polarhome.com env_parallel run-OK unixware.polarhome.com env_parallel run-OK unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found aix.polarhome.com reading from process substitution OK @@ -352,6 +371,7 @@ solaris-x86.polarhome.com reading from process substitution OK solaris.polarhome.com reading from process substitution OK suse.polarhome.com reading from process substitution OK tru64.polarhome.com reading from process substitution OK +ubuntu.polarhome.com reading from process substitution OK ### parset arr seq ::: 2 3 4 (bash ksh zsh only) @@ -375,6 +395,7 @@ solaris-x86.polarhome.com 1 2 1 2 3 1 2 3 4 solaris.polarhome.com 1 2 1 2 3 1 2 3 4 suse.polarhome.com 1 2 1 2 3 1 2 3 4 tru64.polarhome.com 1 2 1 2 3 1 2 3 4 +ubuntu.polarhome.com 1 2 1 2 3 1 2 3 4 unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found unixware.polarhome.com UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 1: `arr=' unexpected ### env_parset arr seq ::: 2 3 4 @@ -398,6 +419,7 @@ solaris-x86.polarhome.com 2 2 3 2 3 4 solaris.polarhome.com 1 2 1 2 1 2 suse.polarhome.com 2 2 3 2 3 4 tru64.polarhome.com 2 2 3 2 3 4 +ubuntu.polarhome.com 2 2 3 2 3 4 unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found unixware.polarhome.com UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 1: `arr=' unexpected @@ -423,6 +445,7 @@ solaris-x86.polarhome.com 1 2,1 2 3,1 2 3 4 solaris.polarhome.com 1 2,1 2 3,1 2 3 4 suse.polarhome.com 1 2,1 2 3,1 2 3 4 tru64.polarhome.com 1 2,1 2 3,1 2 3 4 +ubuntu.polarhome.com 1 2,1 2 3,1 2 3 4 unixware.polarhome.com ,, unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found ### env_parset var1,var2,var3 seq ::: 2 3 4 @@ -446,5 +469,6 @@ solaris-x86.polarhome.com 2,2 3,2 3 4 solaris.polarhome.com 1 2,1 2,1 2 suse.polarhome.com 2,2 3,2 3 4 tru64.polarhome.com 2,2 3,2 3 4 +ubuntu.polarhome.com 2,2 3,2 3 4 unixware.polarhome.com 2,2 3,2 3 4 unixware.polarhome.com UX:sh (/bin/sh): ERROR: source: Not found diff --git a/testsuite/wanted-results/parallel-tutorial b/testsuite/wanted-results/parallel-tutorial index 671ddcd6..f927a88b 100644 --- a/testsuite/wanted-results/parallel-tutorial +++ b/testsuite/wanted-results/parallel-tutorial @@ -539,7 +539,7 @@ B D seq 10 20 | parallel --tmux 'echo start {}; sleep {}; echo done {}' See output with: tmux -S /tmp/parallel-tutorial-tmpdir/tmsXXXXX attach tmux -S /tmp/tmsXXXXX attach -no current session +no sessions parallel --delay 2.5 echo Starting {}\;date ::: 1 2 3 Starting 1 DATE OUTPUT @@ -549,8 +549,14 @@ Starting 3 DATE OUTPUT parallel --timeout 4.1 sleep {}\; echo {} ::: 2 4 6 8 9 +parallel: Warning: This job was killed because it timed out: +parallel: Warning: sleep 6; echo 6 +parallel: Warning: This job was killed because it timed out: +parallel: Warning: sleep 8; echo 8 parallel --timeout 200% sleep {}\; echo {} ::: 2.1 2.2 3 7 2.3 9 +parallel: Warning: This job was killed because it timed out: +parallel: Warning: sleep 7; echo 7 parallel --eta sleep ::: 1 3 2 2 1 3 3 2 1 Computers / CPU cores / Max jobs to run @@ -660,6 +666,8 @@ tried 1 export -f show_signals echo | parallel --termseq TERM,200,TERM,100,TERM,50,KILL,25 \ -u --timeout 1 show_signals +parallel: Warning: This job was killed because it timed out: +parallel: Warning: show_signals '' echo | parallel --termseq INT,200,TERM,100,KILL,25 \ -u --timeout 1 show_signals /bin/bash: show_signals: command not found @@ -757,42 +765,42 @@ Unknown option: ::: Unknown option: green env_parallel only works if it is a function. Do the below and restart your shell. -bash: Put this in ~/.bashrc: . /usr/local/bin/env_parallel.bash - E.g. by doing: echo '. /usr/local/bin/env_parallel.bash' >> ~/.bashrc +bash: Put this in $HOME/.bashrc: . `which env_parallel.bash` + E.g. by doing: echo '. `which env_parallel.bash`' >> $HOME/.bashrc Supports: aliases, functions, variables, arrays -zsh: Put this in ~/.zshrc: . /usr/local/bin/env_parallel.zsh - E.g. by doing: echo '. /usr/local/bin/env_parallel.zsh' >> ~/.zshenv +zsh: Put this in $HOME/.zshrc: . `which env_parallel.zsh` + E.g. by doing: echo '. `which env_parallel.zsh`' >> $HOME/.zshenv Supports: functions, variables, arrays -fish: Put this in ~/.config/fish/config.fish: +fish: Put this in $HOME/.config/fish/config.fish: . (which env_parallel.fish) E.g. by doing: - echo '. (which env_parallel.fish)' >> ~/.config/fish/config.fish + echo '. (which env_parallel.fish)' >> $HOME/.config/fish/config.fish Supports: aliases, functions, variables, arrays -ksh: Put this in ~/.kshrc: source /usr/local/bin/env_parallel.ksh - E.g. by doing: echo 'source /usr/local/bin/env_parallel.ksh' >> ~/.kshrc +ksh: Put this in $HOME/.kshrc: source `which env_parallel.ksh` + E.g. by doing: echo 'source `which env_parallel.ksh`' >> $HOME/.kshrc Supports: aliases, functions, variables, arrays -pdksh: Put this in ~/.profile: source /usr/local/bin/env_parallel.pdksh - E.g. by doing: echo '. /usr/local/bin/env_parallel.pdksh' >> ~/.profile +pdksh: Put this in $HOME/.profile: source `which env_parallel.pdksh` + E.g. by doing: echo '. `which env_parallel.pdksh`' >> $HOME/.profile Supports: aliases, functions, variables, arrays -ash: Put this in ~/.profile: . /usr/local/bin/env_parallel.ash - E.g. by doing: echo '. /usr/local/bin/env_parallel.ash' >> ~/.profile +ash: Put this in $HOME/.profile: . `which env_parallel.ash` + E.g. by doing: echo '. `which env_parallel.ash`' >> $HOME/.profile Supports: aliases, variables -dash: Put this in ~/.profile: . /usr/local/bin/env_parallel.dash - E.g. by doing: echo '. /usr/local/bin/env_parallel.dash' >> ~/.profile +dash: Put this in $HOME/.profile: . `which env_parallel.dash` + E.g. by doing: echo '. `which env_parallel.dash`' >> $HOME/.profile Supports: aliases, variables -csh: Put this in ~/.cshrc: source /usr/local/bin/env_parallel.csh - E.g. by doing: echo 'source /usr/local/bin/env_parallel.csh' >> ~/.cshrc +csh: Put this in $HOME/.cshrc: source `which env_parallel.csh` + E.g. by doing: echo 'source `which env_parallel.csh`' >> $HOME/.cshrc Supports: aliases, variables, arrays with no special chars -tcsh: Put this in ~/.tcshrc: source /usr/local/bin/env_parallel.tcsh - E.g. by doing: echo 'source /usr/local/bin/env_parallel.tcsh' >> ~/.tcshrc +tcsh: Put this in $HOME/.tcshrc: source `which env_parallel.tcsh` + E.g. by doing: echo 'source `which env_parallel.tcsh`' >> $HOME/.tcshrc Supports: aliases, variables, arrays with no special chars To install in all shells run: @@ -841,6 +849,7 @@ KONSOLE_DBUS_WINDOW KONSOLE_PROFILE_NAME LANG LANGUAGE +LC_ALL LC_TIME LESS LESSCLOSE @@ -853,7 +862,6 @@ MAKE_TERMERR MAKE_TERMOUT MANDATORY_PATH MFLAGS -MOZ_NO_REMOTE ORACLE_HOME ORACLE_SID PARALLEL @@ -926,42 +934,42 @@ Unknown option: ::: Unknown option: bar env_parallel only works if it is a function. Do the below and restart your shell. -bash: Put this in ~/.bashrc: . /usr/local/bin/env_parallel.bash - E.g. by doing: echo '. /usr/local/bin/env_parallel.bash' >> ~/.bashrc +bash: Put this in $HOME/.bashrc: . `which env_parallel.bash` + E.g. by doing: echo '. `which env_parallel.bash`' >> $HOME/.bashrc Supports: aliases, functions, variables, arrays -zsh: Put this in ~/.zshrc: . /usr/local/bin/env_parallel.zsh - E.g. by doing: echo '. /usr/local/bin/env_parallel.zsh' >> ~/.zshenv +zsh: Put this in $HOME/.zshrc: . `which env_parallel.zsh` + E.g. by doing: echo '. `which env_parallel.zsh`' >> $HOME/.zshenv Supports: functions, variables, arrays -fish: Put this in ~/.config/fish/config.fish: +fish: Put this in $HOME/.config/fish/config.fish: . (which env_parallel.fish) E.g. by doing: - echo '. (which env_parallel.fish)' >> ~/.config/fish/config.fish + echo '. (which env_parallel.fish)' >> $HOME/.config/fish/config.fish Supports: aliases, functions, variables, arrays -ksh: Put this in ~/.kshrc: source /usr/local/bin/env_parallel.ksh - E.g. by doing: echo 'source /usr/local/bin/env_parallel.ksh' >> ~/.kshrc +ksh: Put this in $HOME/.kshrc: source `which env_parallel.ksh` + E.g. by doing: echo 'source `which env_parallel.ksh`' >> $HOME/.kshrc Supports: aliases, functions, variables, arrays -pdksh: Put this in ~/.profile: source /usr/local/bin/env_parallel.pdksh - E.g. by doing: echo '. /usr/local/bin/env_parallel.pdksh' >> ~/.profile +pdksh: Put this in $HOME/.profile: source `which env_parallel.pdksh` + E.g. by doing: echo '. `which env_parallel.pdksh`' >> $HOME/.profile Supports: aliases, functions, variables, arrays -ash: Put this in ~/.profile: . /usr/local/bin/env_parallel.ash - E.g. by doing: echo '. /usr/local/bin/env_parallel.ash' >> ~/.profile +ash: Put this in $HOME/.profile: . `which env_parallel.ash` + E.g. by doing: echo '. `which env_parallel.ash`' >> $HOME/.profile Supports: aliases, variables -dash: Put this in ~/.profile: . /usr/local/bin/env_parallel.dash - E.g. by doing: echo '. /usr/local/bin/env_parallel.dash' >> ~/.profile +dash: Put this in $HOME/.profile: . `which env_parallel.dash` + E.g. by doing: echo '. `which env_parallel.dash`' >> $HOME/.profile Supports: aliases, variables -csh: Put this in ~/.cshrc: source /usr/local/bin/env_parallel.csh - E.g. by doing: echo 'source /usr/local/bin/env_parallel.csh' >> ~/.cshrc +csh: Put this in $HOME/.cshrc: source `which env_parallel.csh` + E.g. by doing: echo 'source `which env_parallel.csh`' >> $HOME/.cshrc Supports: aliases, variables, arrays with no special chars -tcsh: Put this in ~/.tcshrc: source /usr/local/bin/env_parallel.tcsh - E.g. by doing: echo 'source /usr/local/bin/env_parallel.tcsh' >> ~/.tcshrc +tcsh: Put this in $HOME/.tcshrc: source `which env_parallel.tcsh` + E.g. by doing: echo 'source `which env_parallel.tcsh`' >> $HOME/.tcshrc Supports: aliases, variables, arrays with no special chars To install in all shells run: @@ -971,7 +979,7 @@ To install in all shells run: For details: see man env_parallel parallel -vv --pipepart --block 1M wc :::: num30000 -131072?131072:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 0 168894 | (wc) +131072?131072:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 0 168894 |(wc) 30000 30000 168894 my_func3() { echo in my_func $1 > $1.out @@ -983,18 +991,152 @@ ssh -l parallel lo -- mkdir -p ./.TMPWORKDIR && rsync --protocol 30 -rlDzR -essh parset myvar1,myvar2 echo ::: a b echo $myvar1 echo $myvar2 +Unknown option: myvar1,myvar2 +Unknown option: echo +Unknown option: ::: +Unknown option: a +Unknown option: b +parset only works if it is a function. The function is defined as part +of env_parallel. + +Do the below and restart your shell. + +bash: Put this in $HOME/.bashrc: . `which env_parallel.bash` + E.g. by doing: echo '. `which env_parallel.bash`' >> $HOME/.bashrc + Supports: aliases, functions, variables, arrays + +zsh: Put this in $HOME/.zshrc: . `which env_parallel.zsh` + E.g. by doing: echo '. `which env_parallel.zsh`' >> $HOME/.zshenv + Supports: functions, variables, arrays + +fish: Unsupported + +ksh: Put this in $HOME/.kshrc: source `which env_parallel.ksh` + E.g. by doing: echo 'source `which env_parallel.ksh`' >> $HOME/.kshrc + Supports: aliases, functions, variables, arrays + +pdksh: Put this in $HOME/.profile: source `which env_parallel.pdksh` + E.g. by doing: echo '. `which env_parallel.pdksh`' >> $HOME/.profile + Supports: aliases, functions, variables, arrays + +ash: Put this in $HOME/.profile: . `which env_parallel.ash` + E.g. by doing: echo '. `which env_parallel.ash`' >> $HOME/.profile + Supports: aliases, variables + +dash: Put this in $HOME/.profile: . `which env_parallel.dash` + E.g. by doing: echo '. `which env_parallel.dash`' >> $HOME/.profile + Supports: aliases, variables + +csh: Unsupported + +tcsh: Unsupported + +To install in all shells run: + + parset --install + +For details: see man parset -/bin/bash: parset: command not found parset myarray seq {} 5 ::: 1 2 3 echo "${myarray[1]}" +Unknown option: myarray +Unknown option: seq +Unknown option: {} +Unknown option: 5 +Unknown option: ::: +Unknown option: 1 +Unknown option: 2 +Unknown option: 3 +parset only works if it is a function. The function is defined as part +of env_parallel. + +Do the below and restart your shell. + +bash: Put this in $HOME/.bashrc: . `which env_parallel.bash` + E.g. by doing: echo '. `which env_parallel.bash`' >> $HOME/.bashrc + Supports: aliases, functions, variables, arrays + +zsh: Put this in $HOME/.zshrc: . `which env_parallel.zsh` + E.g. by doing: echo '. `which env_parallel.zsh`' >> $HOME/.zshenv + Supports: functions, variables, arrays + +fish: Unsupported + +ksh: Put this in $HOME/.kshrc: source `which env_parallel.ksh` + E.g. by doing: echo 'source `which env_parallel.ksh`' >> $HOME/.kshrc + Supports: aliases, functions, variables, arrays + +pdksh: Put this in $HOME/.profile: source `which env_parallel.pdksh` + E.g. by doing: echo '. `which env_parallel.pdksh`' >> $HOME/.profile + Supports: aliases, functions, variables, arrays + +ash: Put this in $HOME/.profile: . `which env_parallel.ash` + E.g. by doing: echo '. `which env_parallel.ash`' >> $HOME/.profile + Supports: aliases, variables + +dash: Put this in $HOME/.profile: . `which env_parallel.dash` + E.g. by doing: echo '. `which env_parallel.dash`' >> $HOME/.profile + Supports: aliases, variables + +csh: Unsupported + +tcsh: Unsupported + +To install in all shells run: + + parset --install + +For details: see man parset -/bin/bash: parset: command not found cmd=("echo '<>'" "pwd") parset data ::: "${cmd[@]}" echo "${data[0]}" echo "${data[1]}" +Unknown option: data +Unknown option: ::: +Unknown option: echo '<>' +Unknown option: pwd +parset only works if it is a function. The function is defined as part +of env_parallel. + +Do the below and restart your shell. + +bash: Put this in $HOME/.bashrc: . `which env_parallel.bash` + E.g. by doing: echo '. `which env_parallel.bash`' >> $HOME/.bashrc + Supports: aliases, functions, variables, arrays + +zsh: Put this in $HOME/.zshrc: . `which env_parallel.zsh` + E.g. by doing: echo '. `which env_parallel.zsh`' >> $HOME/.zshenv + Supports: functions, variables, arrays + +fish: Unsupported + +ksh: Put this in $HOME/.kshrc: source `which env_parallel.ksh` + E.g. by doing: echo 'source `which env_parallel.ksh`' >> $HOME/.kshrc + Supports: aliases, functions, variables, arrays + +pdksh: Put this in $HOME/.profile: source `which env_parallel.pdksh` + E.g. by doing: echo '. `which env_parallel.pdksh`' >> $HOME/.profile + Supports: aliases, functions, variables, arrays + +ash: Put this in $HOME/.profile: . `which env_parallel.ash` + E.g. by doing: echo '. `which env_parallel.ash`' >> $HOME/.profile + Supports: aliases, variables + +dash: Put this in $HOME/.profile: . `which env_parallel.dash` + E.g. by doing: echo '. `which env_parallel.dash`' >> $HOME/.profile + Supports: aliases, variables + +csh: Unsupported + +tcsh: Unsupported + +To install in all shells run: + + parset --install + +For details: see man parset -/bin/bash: line 1: parset: command not found parallel --sqlandworker csv:////%2Ftmp%2Flog.csv \ seq ::: 10 ::: 12 13 14 cat /tmp/log.csv @@ -1262,7 +1404,6 @@ The second finished running in the foreground First started First done sem --id my_id -u 'echo Second started; sleep 10; echo Second done' -Second done sem --jobs 3 --id my_id -u 'echo Start 1; sleep 5; echo 1 done' && sem --jobs 3 --id my_id -u 'echo Start 2; sleep 6; echo 2 done' && sem --jobs 3 --id my_id -u 'echo Start 3; sleep 7; echo 3 done' && @@ -1283,8 +1424,8 @@ Start 4 Slow started Forced running after 1 sec Slow ended +Give up after 2 secs parallel: Warning: Semaphore timed out. Stealing the semaphore. -parallel: Warning: Semaphore timed out. Exiting. parallel --help Usage: @@ -1317,15 +1458,15 @@ Academic tradition requires you to cite works you base your article on. If you use programs that use GNU Parallel to process data for an article in a scientific publication, please cite: - O. Tange (2011): GNU Parallel - The Command-Line Power Tool, - ;login: The USENIX Magazine, February 2011:42-47. + O. Tange (2018): GNU Parallel 2018, Mar 2018, ISBN 9781387509881, + DOI https://doi.org/10.5281/zenodo.1146014 This helps funding further development; AND IT WON'T COST YOU A CENT. If you pay 10000 EUR you should feel free to use GNU Parallel without citing. parallel --version GNU parallel VERSION -Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017 +Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018 Ole Tange and Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. @@ -1344,25 +1485,25 @@ Academic tradition requires you to cite works you base your article on. If you use programs that use GNU Parallel to process data for an article in a scientific publication, please cite: -@article{Tange2011a, - title = {GNU Parallel - The Command-Line Power Tool}, - author = {O. Tange}, - address = {Frederiksberg, Denmark}, - journal = {;login: The USENIX Magazine}, - month = {Feb}, - number = {1}, - volume = {36}, - url = {http://www.gnu.org/s/parallel}, - year = {2011}, - pages = {42-47}, - doi = {http://dx.doi.org/10.5281/zenodo.16303} +@book{tange_ole_2018_1146014, + author = {Tange, Ole}, + title = {GNU Parallel 2018}, + publisher = {Ole Tange}, + month = Mar, + year = 2018, + ISBN = {9781387509881}, + doi = {10.5281/zenodo.1146014}, + url = {https://doi.org/10.5281/zenodo.1146014} } -(Feel free to use \nocite{Tange2011a}) +(Feel free to use \nocite{tange_ole_2018_1146014}) This helps funding further development; AND IT WON'T COST YOU A CENT. If you pay 10000 EUR you should feel free to use GNU Parallel without citing. +More about funding GNU Parallel and the citation notice: +https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice + If you send a copy of your published article to tange@gnu.org, it will be mentioned in the release notes of next version of GNU Parallel.