From 9179a80bd33add94259f2761d3d8f3c7979ee185 Mon Sep 17 00:00:00 2001 From: Ole Tange Date: Fri, 21 Jul 2017 21:43:34 +0200 Subject: [PATCH 1/3] parallel: SIGPIPE must be handled differently if printing to --pipe. parallel: --keep-dirlinks is not supported on Centos3/Redhat9. --- src/parallel | 16 +- testsuite/tests-to-run/parallel-local-0.3s.sh | 40 +- testsuite/tests-to-run/parallel-local-100s.sh | 82 ++-- testsuite/tests-to-run/parallel-local-10s.sh | 46 --- testsuite/tests-to-run/parallel-local-ssh6.sh | 18 +- testsuite/tests-to-run/parallel-local-ssh7.sh | 7 +- testsuite/tests-to-run/parallel-local-ssh8.sh | 4 +- testsuite/wanted-results/parallel-local-0.3s | 60 ++- testsuite/wanted-results/parallel-local-100s | 157 ++++++++ testsuite/wanted-results/parallel-local-10s | 358 +++--------------- testsuite/wanted-results/parallel-local-30s | 2 - .../wanted-results/parallel-local-race02 | 22 +- testsuite/wanted-results/parallel-local-ssh5 | 4 +- testsuite/wanted-results/parallel-local-ssh7 | 24 +- testsuite/wanted-results/parallel-local-ssh8 | 1 - testsuite/wanted-results/parallel-local12 | 2 +- testsuite/wanted-results/parallel-local150 | 4 +- testsuite/wanted-results/parallel-local18 | 3 +- testsuite/wanted-results/parallel-local9 | 2 +- testsuite/wanted-results/parallel-tutorial | 23 +- 20 files changed, 386 insertions(+), 489 deletions(-) diff --git a/src/parallel b/src/parallel index 4a0a2c9a..c560bf41 100755 --- a/src/parallel +++ b/src/parallel @@ -3726,7 +3726,7 @@ sub onall { sub __SIGNAL_HANDLING__ {} -sub tstp { +sub sigtstp { # Send TSTP signal (Ctrl-Z) to all children process groups # Uses: # %SIG @@ -3749,13 +3749,13 @@ sub signal_children { # %SIG # Returns: N/A my $signal = shift; + debug("run", "Sending $signal "); kill $signal, map { -$_ } keys %Global::running; # Use default signal handler for GNU Parallel itself $SIG{$signal} = undef; kill $signal, $$; } - sub save_original_signal_handler { # Remember the original signal handler # Uses: @@ -3773,11 +3773,11 @@ sub save_original_signal_handler { $SIG{TERM} = sub {}; # Dummy until jobs really start $SIG{ALRM} = 'IGNORE'; # Allow Ctrl-Z to suspend and `fg` to continue - $SIG{TSTP} = \&tstp; + $SIG{TSTP} = \&sigtstp; $SIG{PIPE} = \&sigpipe; $SIG{CONT} = sub { - # Set $SIG{TSTP} again (it is undef'ed in tstp() ) - $SIG{TSTP} = \&tstp; + # Set $SIG{TSTP} again (it is undef'ed in sigtstp() ) + $SIG{TSTP} = \&sigtstp; # Send continue signal to all children process groups kill "CONT", map { -$_ } keys %Global::running; }; @@ -6438,7 +6438,7 @@ sub rsync_transfer_cmd { } $file = ::shell_quote_file($file); my $sshcmd = $self->sshcommand(); - my $rsync_opt = "-KrlDzR -e" . ::shell_quote_scalar($sshcmd); + my $rsync_opt = "-rlDzR -e" . ::shell_quote_scalar($sshcmd); my $serverlogin = $self->serverlogin(); # Make dir if it does not exist return "$sshcmd $serverlogin -- mkdir -p $rsync_destdir && " . @@ -6980,6 +6980,10 @@ sub write { # syswrite may not write all in one go, # so make sure everything is written. my $written; + + # If writing is to a closed pipe: + # Do not call signal handler, but let nothing be written + local $SIG{PIPE} = undef; while($written = syswrite($stdin_fh,$$remaining_ref)){ substr($$remaining_ref,0,$written) = ""; } diff --git a/testsuite/tests-to-run/parallel-local-0.3s.sh b/testsuite/tests-to-run/parallel-local-0.3s.sh index 8ee48e11..b7c2cf74 100644 --- a/testsuite/tests-to-run/parallel-local-0.3s.sh +++ b/testsuite/tests-to-run/parallel-local-0.3s.sh @@ -174,17 +174,6 @@ echo 'bug #46016: --joblog should not log when --dryrun' echo '**' -echo 'bug #45993: --wd ... should also work when run locally' - - parallel --wd /bi 'pwd; echo $OLDPWD; echo' ::: fail - parallel --wd /bin 'pwd; echo $OLDPWD; echo' ::: OK - parallel --wd / 'pwd; echo $OLDPWD; echo' ::: OK - parallel --wd /tmp 'pwd; echo $OLDPWD; echo' ::: OK - parallel --wd ... 'pwd; echo $OLDPWD; echo' ::: OK | perl -pe 's/\d+/0/g' - parallel --wd . 'pwd; echo $OLDPWD; echo' ::: OK - -echo '**' - echo 'bug #46232: {%} with --bar/--eta/--shuf or --halt xx% broken' parallel --bar -kj2 --delay 0.1 echo {%} ::: a b ::: c d e 2>/dev/null @@ -552,13 +541,6 @@ echo '### bug #36260: {n} expansion in --colsep files fails for empty fields if echo A,B,, | parallel --colsep , echo {1}{3}{2} -echo '**' - -echo '### bug #34422: parallel -X --eta crashes with div by zero' - - # We do not care how long it took - seq 2 | stdout parallel -X --eta echo | grep -E -v 'ETA:.*AVG' - echo '**' bash -O extglob -c '. `which env_parallel.bash`; @@ -724,6 +706,28 @@ par_newline_in_command() { " ::: O ::: K } +par_wd_3dot_local() { + echo 'bug #45993: --wd ... should also work when run locally' + + parallel --wd /bi 'pwd; echo $OLDPWD; echo' ::: fail + parallel --wd /bin 'pwd; echo $OLDPWD; echo' ::: OK + parallel --wd / 'pwd; echo $OLDPWD; echo' ::: OK + parallel --wd /tmp 'pwd; echo $OLDPWD; echo' ::: OK + parallel --wd ... 'pwd; echo $OLDPWD; echo' ::: OK | + perl -pe 's:/mnt/4tb::; s/'`hostname`'/hostname/g' | + perl -pe 's/\d+/0/g' + parallel --wd . 'pwd; echo $OLDPWD; echo' ::: OK +} + +par_X_eta_div_zero() { + echo '### bug #34422: parallel -X --eta crashes with div by zero' + + # We do not care how long it took + seq 2 | stdout parallel -X --eta echo | + grep -E -v 'ETA:.*AVG' | + perl -pe 's/\d+/0/g' +} + export -f $(compgen -A function | grep par_) compgen -A function | grep par_ | sort | parallel -j6 --tag -k --joblog +/tmp/jl-`basename $0` '{} 2>&1' diff --git a/testsuite/tests-to-run/parallel-local-100s.sh b/testsuite/tests-to-run/parallel-local-100s.sh index 1d627bbf..d2f89fd2 100644 --- a/testsuite/tests-to-run/parallel-local-100s.sh +++ b/testsuite/tests-to-run/parallel-local-100s.sh @@ -31,42 +31,44 @@ par_over_4GB() { } -measure() { - # Input: - # $1 = iterations - # $2 = sleep 1 sec for every $2 - seq $1 | ramusage parallel -u sleep '{= $_=$_%'$2'?0:1 =}' -} -export -f measure -no_mem_leak() { - # Return false if leaking - max1000=$(parallel measure {} 100000 ::: 1000 1000 1000 1000 1000 1000 1000 1000 | - sort -n | tail -n 1) - min30000=$(parallel measure {} 100000 ::: 30000 30000 30000 | - sort -n | head -n 1) - if [ $max1000 -gt $min30000 ] ; then - # Make sure there are a few sleeps - max1000=$(parallel measure {} 100 ::: 1000 1000 1000 1000 1000 1000 1000 1000 | - sort -n | tail -n 1) - min30000=$(parallel measure {} 100 ::: 30000 30000 30000 | - sort -n | head -n 1) +par_mem_leak() { + echo "### test for mem leak" + + no_mem_leak() { + measure() { + # Input: + # $1 = iterations + # $2 = sleep 1 sec for every $2 + seq $1 | ramusage parallel -u sleep '{= $_=$_%'$2'?0:1 =}' + } + export -f measure + + # Return false if leaking + max1000=$(parallel measure {} 100000 ::: 1000 1000 1000 1000 1000 1000 1000 1000 | + sort -n | tail -n 1) + min30000=$(parallel measure {} 100000 ::: 3000 3000 3000 | + sort -n | head -n 1) if [ $max1000 -gt $min30000 ] ; then - echo $max1000 -gt $min30000 = no leak - return 0 + # Make sure there are a few sleeps + max1000=$(parallel measure {} 100 ::: 1000 1000 1000 1000 1000 1000 1000 1000 | + sort -n | tail -n 1) + min30000=$(parallel measure {} 100 ::: 3000 3000 3000 | + sort -n | head -n 1) + if [ $max1000 -gt $min30000 ] ; then + echo $max1000 -gt $min30000 = no leak + return 0 + else + echo not $max1000 -gt $min30000 = possible leak + return 1 + fi else echo not $max1000 -gt $min30000 = possible leak return 1 fi - else - echo not $max1000 -gt $min30000 = possible leak - return 1 - fi -} -export -f no_mem_leak + } -par_mem_leak() { - echo "### test for mem leak" + renice -n 3 $$ 2>/dev/null >/dev/null if no_mem_leak >/dev/null ; then echo no mem leak detected else @@ -82,6 +84,28 @@ par_timeout() { perl -ne '10 < $_ and $_ < 100 and print "OK\n"' } +par_halt_on_error() { + mytest() { + HALT=$1 + BOOL1=$2 + BOOL2=$3 + (echo "sleep 1;$BOOL1"; + echo "sleep 2;$BOOL2"; + echo "sleep 3;$BOOL1") | + parallel -j10 --halt-on-error $HALT + echo $? + (echo "sleep 1;$BOOL1"; + echo "sleep 2;$BOOL2"; + echo "sleep 3;$BOOL1"; + echo "sleep 4;non_exist"; + ) | + parallel -j10 --halt-on-error $HALT + echo $? + } + export -f mytest + parallel -j1 -k --tag mytest ::: -2 -1 0 1 2 ::: true false ::: true false +} + export -f $(compgen -A function | grep par_) compgen -A function | grep par_ | sort | parallel -vj0 -k --tag --joblog /tmp/jl-`basename $0` '{} 2>&1' diff --git a/testsuite/tests-to-run/parallel-local-10s.sh b/testsuite/tests-to-run/parallel-local-10s.sh index 8ae8ffbd..6dc56a57 100644 --- a/testsuite/tests-to-run/parallel-local-10s.sh +++ b/testsuite/tests-to-run/parallel-local-10s.sh @@ -98,52 +98,6 @@ par_k() { echo "echo end") | stdout nice parallel -k -j0 } -par_halt_on_error() { - mytest() { - HALT=$1 - BOOL1=$2 - BOOL2=$3 - (echo "sleep 1;$BOOL1"; - echo "sleep 2;$BOOL2"; - echo "sleep 3;$BOOL1") | - parallel -j10 --halt-on-error $HALT - echo $? - (echo "sleep 1;$BOOL1"; - echo "sleep 2;$BOOL2"; - echo "sleep 3;$BOOL1"; - echo "sleep 4;non_exist"; - ) | - parallel -j10 --halt-on-error $HALT - echo $? - } - export -f mytest - parallel -j0 -k --tag mytest ::: -2 -1 0 1 2 ::: true false ::: true false -} - -par_first_print_halt_on_error_1() { - echo '### Test first dying print --halt-on-error 1'; - (echo 0; echo 3; seq 0 7;echo 0; echo 8) | parallel -j10 -kq --halt 1 perl -e 'sleep $ARGV[0];print STDERR @ARGV,"\n"; exit shift'; - echo exit code $? -} - -par_first_print_halt_on_error_2() { - echo '### Test last dying print --halt-on-error 2'; - (echo 0; echo 3; seq 0 7;echo 0; echo 8) | parallel -j10 -kq --halt 2 perl -e 'sleep $ARGV[0];print STDERR @ARGV,"\n"; exit shift'; - echo exit code $? -} - -par_first_print_halt_on_error_minus_1() { - echo '### Test last dying print --halt-on-error -1'; - (echo 0; echo 3; seq 0 7;echo 0; echo 8) | parallel -j10 -kq --halt -1 perl -e 'sleep $ARGV[0];print STDERR @ARGV,"\n"; exit not shift'; - echo exit code $? -} - -par_first_print_halt_on_error_minus_2() { - echo '### Test last dying print --halt-on-error -2'; - (echo 0; echo 3; seq 0 7;echo 0; echo 8) | parallel -j10 -kq --halt -2 perl -e 'sleep $ARGV[0];print STDERR @ARGV,"\n"; exit not shift'; - echo exit code $? -} - par_k_linebuffer() { echo '### bug #47750: -k --line-buffer should give current job up to now' diff --git a/testsuite/tests-to-run/parallel-local-ssh6.sh b/testsuite/tests-to-run/parallel-local-ssh6.sh index 54465a38..73ef5d29 100644 --- a/testsuite/tests-to-run/parallel-local-ssh6.sh +++ b/testsuite/tests-to-run/parallel-local-ssh6.sh @@ -26,18 +26,24 @@ par_test_onall_u() { par_test_nonall() { echo '### Test --nonall' parallel --nonall -k -S $SSHLOGIN1,$SSHLOGIN2 pwd | + perl -pe 's:/mnt/4tb::g' | sort } par_test_nonall_u() { echo '### Test --nonall -u - should be interleaved x y x y' - parallel --nonall -S $SSHLOGIN1,$SSHLOGIN2 -u 'pwd|grep -q csh && sleep 3; pwd;sleep 12;pwd;' + parallel --nonall -S $SSHLOGIN1,$SSHLOGIN2 -u 'pwd|grep -q csh && sleep 3; pwd;sleep 12;pwd;' | + perl -pe 's:/mnt/4tb::g' } par_read_sshloginfile_from_stdin() { echo '### Test read sshloginfile from STDIN' - echo $SSHLOGIN1,$SSHLOGIN2 | parallel -S - -k --nonall pwd - echo $SSHLOGIN1,$SSHLOGIN2 | parallel --sshloginfile - -k --onall pwd\; echo ::: foo + echo $SSHLOGIN1,$SSHLOGIN2 | + parallel -S - -k --nonall pwd | + perl -pe 's:/mnt/4tb::g' + echo $SSHLOGIN1,$SSHLOGIN2 | + parallel --sshloginfile - -k --onall pwd\; echo ::: foo | + perl -pe 's:/mnt/4tb::g' } par_nonall_basefile() { @@ -77,7 +83,8 @@ par_workdir_dot() { ssh $SSHLOGIN1 mkdir -p mydir mkdir -p $HOME/mydir cd $HOME/mydir - parallel --workdir . -S $SSHLOGIN1 ::: pwd + parallel --workdir . -S $SSHLOGIN1 ::: pwd | + perl -pe 's:/mnt/4tb::g' } par_wd_dot() { @@ -85,7 +92,8 @@ par_wd_dot() { ssh $SSHLOGIN2 mkdir -p mydir mkdir -p $HOME/mydir cd $HOME/mydir - parallel --workdir . -S $SSHLOGIN2 ::: pwd + parallel --workdir . -S $SSHLOGIN2 ::: pwd | + perl -pe 's:/mnt/4tb::g' } par_wd_braces() { diff --git a/testsuite/tests-to-run/parallel-local-ssh7.sh b/testsuite/tests-to-run/parallel-local-ssh7.sh index 103ad3cf..608591d7 100755 --- a/testsuite/tests-to-run/parallel-local-ssh7.sh +++ b/testsuite/tests-to-run/parallel-local-ssh7.sh @@ -945,16 +945,13 @@ par_bash_environment_too_big() { myscript=$(cat <<'_EOF' echo 'bug #50815: env_parallel should warn if the environment is too big' . `which env_parallel.bash`; - bigvar="$(yes | head -c 119k)" - env_parallel echo ::: OK - env_parallel -S lo echo ::: OK - bigvar="$(yes \"| head -c 79k)" + bigvar="$(yes \"| head -c 76k)" env_parallel echo ::: OK env_parallel -S lo echo ::: OK bigvar=u - eval 'bigfunc() { a="'"$(yes a| head -c 120k)"'"; };' + eval 'bigfunc() { a="'"$(yes a| head -c 115k)"'"; };' env_parallel echo ::: OK env_parallel -S lo echo ::: OK diff --git a/testsuite/tests-to-run/parallel-local-ssh8.sh b/testsuite/tests-to-run/parallel-local-ssh8.sh index 3f995439..1bc2aab0 100644 --- a/testsuite/tests-to-run/parallel-local-ssh8.sh +++ b/testsuite/tests-to-run/parallel-local-ssh8.sh @@ -7,7 +7,7 @@ par_path_remote_bash() { rm -rf /tmp/parallel cp /usr/local/bin/parallel /tmp - cat <<'_EOS' | stdout ssh nopathbash@lo -T | grep -Ev 'packages can be updated|System restart required|Welcome to|https://|Ubuntu|http://' | uniq + cat <<'_EOS' | stdout ssh nopathbash@lo -T | grep -Ev 'updates are security updates|packages can be updated|System restart required|Welcome to|https://|Ubuntu|http://|^$' | uniq echo BASH Path before: $PATH with no parallel parallel echo ::: 1 # Race condition stderr/stdout @@ -28,7 +28,7 @@ par_path_remote_csh() { rm -rf /tmp/parallel cp /usr/local/bin/parallel /tmp - cat <<'_EOS' | stdout ssh nopathcsh@lo -T | grep -Ev 'packages can be updated|System restart required|Welcome to|https://|Ubuntu|http://' | uniq + cat <<'_EOS' | stdout ssh nopathcsh@lo -T | grep -Ev 'updates are security updates|packages can be updated|System restart required|Welcome to|https://|Ubuntu|http://' | uniq echo CSH Path before: $PATH with no parallel which parallel >& /dev/stdout echo '^^^^^^^^ Not found is OK' diff --git a/testsuite/wanted-results/parallel-local-0.3s b/testsuite/wanted-results/parallel-local-0.3s index 1b9cd955..836b3618 100644 --- a/testsuite/wanted-results/parallel-local-0.3s +++ b/testsuite/wanted-results/parallel-local-0.3s @@ -275,32 +275,6 @@ bug #46016: --joblog should not log when --dryrun echo Only_this echo '**' ** -echo 'bug #45993: --wd ... should also work when run locally' -bug #45993: --wd ... should also work when run locally - parallel --wd /bi 'pwd; echo $OLDPWD; echo' ::: fail -parallel: Error: Cannot change into non-executable dir /bi: No such file or directory - parallel --wd /bin 'pwd; echo $OLDPWD; echo' ::: OK -/bin -~/privat/parallel/testsuite -OK - parallel --wd / 'pwd; echo $OLDPWD; echo' ::: OK -/ -~/privat/parallel/testsuite -OK - parallel --wd /tmp 'pwd; echo $OLDPWD; echo' ::: OK -/tmp -~/privat/parallel/testsuite -OK - parallel --wd ... 'pwd; echo $OLDPWD; echo' ::: OK | perl -pe 's/\d+/0/g' -~/.parallel/tmp/hk-0-0 -~/privat/parallel/testsuite -OK - parallel --wd . 'pwd; echo $OLDPWD; echo' ::: OK -~/privat/parallel/testsuite -~/privat/parallel/testsuite -OK -echo '**' -** echo 'bug #46232: {%} with --bar/--eta/--shuf or --halt xx% broken' bug #46232: {%} with --bar/--eta/--shuf or --halt xx% broken parallel --bar -kj2 --delay 0.1 echo {%} ::: a b ::: c d e 2>/dev/null @@ -1472,17 +1446,6 @@ echo '### bug #36260: {n} expansion in --colsep files fails for empty fields if echo A,B,, | parallel --colsep , echo {1}{3}{2} AB echo '**' -** -echo '### bug #34422: parallel -X --eta crashes with div by zero' -### bug #34422: parallel -X --eta crashes with div by zero - # We do not care how long it took - seq 2 | stdout parallel -X --eta echo | grep -E -v 'ETA:.*AVG' - -Computers / CPU cores / Max jobs to run -1:local / 2 / 2 - -Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete -echo '**' ** bash -O extglob -c '. `which env_parallel.bash`; _longopt () { case "$prev" in --+([-a-z0-9_])) echo foo;; esac; }; env_parallel echo ::: env_parallel 2>&1 ' env_parallel @@ -1592,6 +1555,12 @@ echo '**' ** ### 1 .par file from --files expected 10 +par_X_eta_div_zero ### bug #34422: parallel -X --eta crashes with div by zero +par_X_eta_div_zero +par_X_eta_div_zero Computers / CPU cores / Max jobs to run +par_X_eta_div_zero 0:local / 0 / 0 +par_X_eta_div_zero +par_X_eta_div_zero Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete par_append_joblog ### can you append to a joblog using + par_append_joblog 1 par_append_joblog 1 @@ -1683,3 +1652,20 @@ par_tee 4 -l 122853 par_tee 4 -c 815290 par_tee 5 -l 122853 par_tee 5 -c 815290 +par_wd_3dot_local bug #45993: --wd ... should also work when run locally +par_wd_3dot_local parallel: Error: Cannot change into non-executable dir /bi: No such file or directory +par_wd_3dot_local /bin +par_wd_3dot_local ~/privat/parallel/testsuite +par_wd_3dot_local OK +par_wd_3dot_local / +par_wd_3dot_local ~/privat/parallel/testsuite +par_wd_3dot_local OK +par_wd_3dot_local /tmp +par_wd_3dot_local ~/privat/parallel/testsuite +par_wd_3dot_local OK +par_wd_3dot_local /home/tange/.parallel/tmp/hostname-0-0 +par_wd_3dot_local /home/tange/privat/parallel/testsuite +par_wd_3dot_local OK +par_wd_3dot_local ~/privat/parallel/testsuite +par_wd_3dot_local ~/privat/parallel/testsuite +par_wd_3dot_local OK diff --git a/testsuite/wanted-results/parallel-local-100s b/testsuite/wanted-results/parallel-local-100s index be15e88a..cafb8945 100644 --- a/testsuite/wanted-results/parallel-local-100s +++ b/testsuite/wanted-results/parallel-local-100s @@ -1,3 +1,160 @@ +par_halt_on_error 2>&1 +par_halt_on_error -2 true true 0 +par_halt_on_error -2 true true 0 +par_halt_on_error -2 true true parallel: This job succeeded: +par_halt_on_error -2 true true sleep 1;true +par_halt_on_error -2 true true parallel: This job succeeded: +par_halt_on_error -2 true true sleep 1;true +par_halt_on_error -2 true false 0 +par_halt_on_error -2 true false 0 +par_halt_on_error -2 true false parallel: This job succeeded: +par_halt_on_error -2 true false sleep 1;true +par_halt_on_error -2 true false parallel: This job succeeded: +par_halt_on_error -2 true false sleep 1;true +par_halt_on_error -2 false true 0 +par_halt_on_error -2 false true 0 +par_halt_on_error -2 false true parallel: This job succeeded: +par_halt_on_error -2 false true sleep 2;true +par_halt_on_error -2 false true parallel: This job succeeded: +par_halt_on_error -2 false true sleep 2;true +par_halt_on_error -2 false false 3 +par_halt_on_error -2 false false 4 +par_halt_on_error -2 false false /bin/bash: non_exist: command not found +par_halt_on_error -1 true true 0 +par_halt_on_error -1 true true 0 +par_halt_on_error -1 true true parallel: This job succeeded: +par_halt_on_error -1 true true sleep 1;true +par_halt_on_error -1 true true parallel: Starting no more jobs. Waiting for 2 jobs to finish. +par_halt_on_error -1 true true parallel: This job succeeded: +par_halt_on_error -1 true true sleep 2;true +par_halt_on_error -1 true true parallel: Starting no more jobs. Waiting for 1 jobs to finish. +par_halt_on_error -1 true true parallel: This job succeeded: +par_halt_on_error -1 true true sleep 3;true +par_halt_on_error -1 true true parallel: This job succeeded: +par_halt_on_error -1 true true sleep 1;true +par_halt_on_error -1 true true parallel: Starting no more jobs. Waiting for 3 jobs to finish. +par_halt_on_error -1 true true parallel: This job succeeded: +par_halt_on_error -1 true true sleep 2;true +par_halt_on_error -1 true true parallel: Starting no more jobs. Waiting for 2 jobs to finish. +par_halt_on_error -1 true true parallel: This job succeeded: +par_halt_on_error -1 true true sleep 3;true +par_halt_on_error -1 true true parallel: Starting no more jobs. Waiting for 1 jobs to finish. +par_halt_on_error -1 true true /bin/bash: non_exist: command not found +par_halt_on_error -1 true false 0 +par_halt_on_error -1 true false 0 +par_halt_on_error -1 true false parallel: This job succeeded: +par_halt_on_error -1 true false sleep 1;true +par_halt_on_error -1 true false parallel: Starting no more jobs. Waiting for 2 jobs to finish. +par_halt_on_error -1 true false parallel: This job succeeded: +par_halt_on_error -1 true false sleep 3;true +par_halt_on_error -1 true false parallel: This job succeeded: +par_halt_on_error -1 true false sleep 1;true +par_halt_on_error -1 true false parallel: Starting no more jobs. Waiting for 3 jobs to finish. +par_halt_on_error -1 true false parallel: This job succeeded: +par_halt_on_error -1 true false sleep 3;true +par_halt_on_error -1 true false parallel: Starting no more jobs. Waiting for 1 jobs to finish. +par_halt_on_error -1 true false /bin/bash: non_exist: command not found +par_halt_on_error -1 false true 0 +par_halt_on_error -1 false true 0 +par_halt_on_error -1 false true parallel: This job succeeded: +par_halt_on_error -1 false true sleep 2;true +par_halt_on_error -1 false true parallel: Starting no more jobs. Waiting for 1 jobs to finish. +par_halt_on_error -1 false true parallel: This job succeeded: +par_halt_on_error -1 false true sleep 2;true +par_halt_on_error -1 false true parallel: Starting no more jobs. Waiting for 2 jobs to finish. +par_halt_on_error -1 false true /bin/bash: non_exist: command not found +par_halt_on_error -1 false false 3 +par_halt_on_error -1 false false 4 +par_halt_on_error -1 false false /bin/bash: non_exist: command not found +par_halt_on_error 0 true true 0 +par_halt_on_error 0 true true 1 +par_halt_on_error 0 true true /bin/bash: non_exist: command not found +par_halt_on_error 0 true false 1 +par_halt_on_error 0 true false 2 +par_halt_on_error 0 true false /bin/bash: non_exist: command not found +par_halt_on_error 0 false true 2 +par_halt_on_error 0 false true 3 +par_halt_on_error 0 false true /bin/bash: non_exist: command not found +par_halt_on_error 0 false false 3 +par_halt_on_error 0 false false 4 +par_halt_on_error 0 false false /bin/bash: non_exist: command not found +par_halt_on_error 1 true true 0 +par_halt_on_error 1 true true 127 +par_halt_on_error 1 true true /bin/bash: non_exist: command not found +par_halt_on_error 1 true true parallel: This job failed: +par_halt_on_error 1 true true sleep 4;non_exist +par_halt_on_error 1 true false 1 +par_halt_on_error 1 true false 1 +par_halt_on_error 1 true false parallel: This job failed: +par_halt_on_error 1 true false sleep 2;false +par_halt_on_error 1 true false parallel: Starting no more jobs. Waiting for 1 jobs to finish. +par_halt_on_error 1 true false parallel: This job failed: +par_halt_on_error 1 true false sleep 2;false +par_halt_on_error 1 true false parallel: Starting no more jobs. Waiting for 2 jobs to finish. +par_halt_on_error 1 true false /bin/bash: non_exist: command not found +par_halt_on_error 1 true false parallel: This job failed: +par_halt_on_error 1 true false sleep 4;non_exist +par_halt_on_error 1 false true 1 +par_halt_on_error 1 false true 1 +par_halt_on_error 1 false true parallel: This job failed: +par_halt_on_error 1 false true sleep 1;false +par_halt_on_error 1 false true parallel: Starting no more jobs. Waiting for 2 jobs to finish. +par_halt_on_error 1 false true parallel: This job failed: +par_halt_on_error 1 false true sleep 3;false +par_halt_on_error 1 false true parallel: This job failed: +par_halt_on_error 1 false true sleep 1;false +par_halt_on_error 1 false true parallel: Starting no more jobs. Waiting for 3 jobs to finish. +par_halt_on_error 1 false true parallel: This job failed: +par_halt_on_error 1 false true sleep 3;false +par_halt_on_error 1 false true parallel: Starting no more jobs. Waiting for 1 jobs to finish. +par_halt_on_error 1 false true /bin/bash: non_exist: command not found +par_halt_on_error 1 false true parallel: This job failed: +par_halt_on_error 1 false true sleep 4;non_exist +par_halt_on_error 1 false false 1 +par_halt_on_error 1 false false 1 +par_halt_on_error 1 false false parallel: This job failed: +par_halt_on_error 1 false false sleep 1;false +par_halt_on_error 1 false false parallel: Starting no more jobs. Waiting for 2 jobs to finish. +par_halt_on_error 1 false false parallel: This job failed: +par_halt_on_error 1 false false sleep 2;false +par_halt_on_error 1 false false parallel: Starting no more jobs. Waiting for 1 jobs to finish. +par_halt_on_error 1 false false parallel: This job failed: +par_halt_on_error 1 false false sleep 3;false +par_halt_on_error 1 false false parallel: This job failed: +par_halt_on_error 1 false false sleep 1;false +par_halt_on_error 1 false false parallel: Starting no more jobs. Waiting for 3 jobs to finish. +par_halt_on_error 1 false false parallel: This job failed: +par_halt_on_error 1 false false sleep 2;false +par_halt_on_error 1 false false parallel: Starting no more jobs. Waiting for 2 jobs to finish. +par_halt_on_error 1 false false parallel: This job failed: +par_halt_on_error 1 false false sleep 3;false +par_halt_on_error 1 false false parallel: Starting no more jobs. Waiting for 1 jobs to finish. +par_halt_on_error 1 false false /bin/bash: non_exist: command not found +par_halt_on_error 1 false false parallel: This job failed: +par_halt_on_error 1 false false sleep 4;non_exist +par_halt_on_error 2 true true 0 +par_halt_on_error 2 true true 127 +par_halt_on_error 2 true true /bin/bash: non_exist: command not found +par_halt_on_error 2 true true parallel: This job failed: +par_halt_on_error 2 true true sleep 4;non_exist +par_halt_on_error 2 true false 1 +par_halt_on_error 2 true false 1 +par_halt_on_error 2 true false parallel: This job failed: +par_halt_on_error 2 true false sleep 2;false +par_halt_on_error 2 true false parallel: This job failed: +par_halt_on_error 2 true false sleep 2;false +par_halt_on_error 2 false true 1 +par_halt_on_error 2 false true 1 +par_halt_on_error 2 false true parallel: This job failed: +par_halt_on_error 2 false true sleep 1;false +par_halt_on_error 2 false true parallel: This job failed: +par_halt_on_error 2 false true sleep 1;false +par_halt_on_error 2 false false 1 +par_halt_on_error 2 false false 1 +par_halt_on_error 2 false false parallel: This job failed: +par_halt_on_error 2 false false sleep 1;false +par_halt_on_error 2 false false parallel: This job failed: +par_halt_on_error 2 false false sleep 1;false par_mem_leak 2>&1 par_mem_leak ### test for mem leak par_mem_leak no mem leak detected diff --git a/testsuite/wanted-results/parallel-local-10s b/testsuite/wanted-results/parallel-local-10s index edc0c461..542478a0 100644 --- a/testsuite/wanted-results/parallel-local-10s +++ b/testsuite/wanted-results/parallel-local-10s @@ -7,259 +7,13 @@ par__pipe_tee bug #45479: --pipe/--pipepart --tee par__pipe_tee --pipe --tee par__pipe_tee 3221225472 par__pipepart_spawn ### bug #46214: Using --pipepart doesnt spawn multiple jobs in version 20150922 -par__pipepart_spawn 1:local / 2 / 999 +par__pipepart_spawn 1:local / 8 / 999 par__pipepart_tee bug #45479: --pipe/--pipepart --tee par__pipepart_tee --pipepart --tee par__pipepart_tee 3221225472 par_compress_fail ### bug #41609: --compress fails par_compress_fail 24812dd0f24a26d08a780f988b9d5ad2 - par_compress_fail 24812dd0f24a26d08a780f988b9d5ad2 - -par_first_print_halt_on_error_1 ### Test first dying print --halt-on-error 1 -par_first_print_halt_on_error_1 0 -par_first_print_halt_on_error_1 parallel: This job failed: -par_first_print_halt_on_error_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 1 -par_first_print_halt_on_error_1 parallel: Starting no more jobs. Waiting for 8 jobs to finish. -par_first_print_halt_on_error_1 parallel: This job failed: -par_first_print_halt_on_error_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 2 -par_first_print_halt_on_error_1 parallel: Starting no more jobs. Waiting for 7 jobs to finish. -par_first_print_halt_on_error_1 3 -par_first_print_halt_on_error_1 0 -par_first_print_halt_on_error_1 1 -par_first_print_halt_on_error_1 2 -par_first_print_halt_on_error_1 parallel: This job failed: -par_first_print_halt_on_error_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 3 -par_first_print_halt_on_error_1 parallel: Starting no more jobs. Waiting for 6 jobs to finish. -par_first_print_halt_on_error_1 3 -par_first_print_halt_on_error_1 parallel: This job failed: -par_first_print_halt_on_error_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 3 -par_first_print_halt_on_error_1 parallel: Starting no more jobs. Waiting for 5 jobs to finish. -par_first_print_halt_on_error_1 4 -par_first_print_halt_on_error_1 parallel: This job failed: -par_first_print_halt_on_error_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 4 -par_first_print_halt_on_error_1 parallel: Starting no more jobs. Waiting for 4 jobs to finish. -par_first_print_halt_on_error_1 5 -par_first_print_halt_on_error_1 parallel: This job failed: -par_first_print_halt_on_error_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 5 -par_first_print_halt_on_error_1 parallel: Starting no more jobs. Waiting for 3 jobs to finish. -par_first_print_halt_on_error_1 6 -par_first_print_halt_on_error_1 parallel: This job failed: -par_first_print_halt_on_error_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 6 -par_first_print_halt_on_error_1 parallel: Starting no more jobs. Waiting for 2 jobs to finish. -par_first_print_halt_on_error_1 7 -par_first_print_halt_on_error_1 0 -par_first_print_halt_on_error_1 parallel: This job failed: -par_first_print_halt_on_error_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 7 -par_first_print_halt_on_error_1 parallel: Starting no more jobs. Waiting for 1 jobs to finish. -par_first_print_halt_on_error_1 8 -par_first_print_halt_on_error_1 parallel: This job failed: -par_first_print_halt_on_error_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 8 -par_first_print_halt_on_error_1 exit code 1 -par_first_print_halt_on_error_2 ### Test last dying print --halt-on-error 2 -par_first_print_halt_on_error_2 0 -par_first_print_halt_on_error_2 parallel: This job failed: -par_first_print_halt_on_error_2 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 1 -par_first_print_halt_on_error_2 exit code 1 -par_first_print_halt_on_error_minus_1 ### Test last dying print --halt-on-error -1 -par_first_print_halt_on_error_minus_1 0 -par_first_print_halt_on_error_minus_1 parallel: This job succeeded: -par_first_print_halt_on_error_minus_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ not\ shift 1 -par_first_print_halt_on_error_minus_1 parallel: Starting no more jobs. Waiting for 8 jobs to finish. -par_first_print_halt_on_error_minus_1 parallel: This job succeeded: -par_first_print_halt_on_error_minus_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ not\ shift 2 -par_first_print_halt_on_error_minus_1 parallel: Starting no more jobs. Waiting for 7 jobs to finish. -par_first_print_halt_on_error_minus_1 3 -par_first_print_halt_on_error_minus_1 0 -par_first_print_halt_on_error_minus_1 1 -par_first_print_halt_on_error_minus_1 2 -par_first_print_halt_on_error_minus_1 parallel: This job succeeded: -par_first_print_halt_on_error_minus_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ not\ shift 3 -par_first_print_halt_on_error_minus_1 parallel: Starting no more jobs. Waiting for 6 jobs to finish. -par_first_print_halt_on_error_minus_1 3 -par_first_print_halt_on_error_minus_1 parallel: This job succeeded: -par_first_print_halt_on_error_minus_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ not\ shift 3 -par_first_print_halt_on_error_minus_1 parallel: Starting no more jobs. Waiting for 5 jobs to finish. -par_first_print_halt_on_error_minus_1 4 -par_first_print_halt_on_error_minus_1 parallel: This job succeeded: -par_first_print_halt_on_error_minus_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ not\ shift 4 -par_first_print_halt_on_error_minus_1 parallel: Starting no more jobs. Waiting for 4 jobs to finish. -par_first_print_halt_on_error_minus_1 5 -par_first_print_halt_on_error_minus_1 parallel: This job succeeded: -par_first_print_halt_on_error_minus_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ not\ shift 5 -par_first_print_halt_on_error_minus_1 parallel: Starting no more jobs. Waiting for 3 jobs to finish. -par_first_print_halt_on_error_minus_1 6 -par_first_print_halt_on_error_minus_1 parallel: This job succeeded: -par_first_print_halt_on_error_minus_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ not\ shift 6 -par_first_print_halt_on_error_minus_1 parallel: Starting no more jobs. Waiting for 2 jobs to finish. -par_first_print_halt_on_error_minus_1 7 -par_first_print_halt_on_error_minus_1 0 -par_first_print_halt_on_error_minus_1 parallel: This job succeeded: -par_first_print_halt_on_error_minus_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ not\ shift 7 -par_first_print_halt_on_error_minus_1 parallel: Starting no more jobs. Waiting for 1 jobs to finish. -par_first_print_halt_on_error_minus_1 8 -par_first_print_halt_on_error_minus_1 parallel: This job succeeded: -par_first_print_halt_on_error_minus_1 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ not\ shift 8 -par_first_print_halt_on_error_minus_1 exit code 0 -par_first_print_halt_on_error_minus_2 ### Test last dying print --halt-on-error -2 -par_first_print_halt_on_error_minus_2 0 -par_first_print_halt_on_error_minus_2 parallel: This job succeeded: -par_first_print_halt_on_error_minus_2 perl -e sleep\ \$ARGV\[0\]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ not\ shift 1 -par_first_print_halt_on_error_minus_2 exit code 0 -par_halt_on_error -2 true true 0 -par_halt_on_error -2 true true 0 -par_halt_on_error -2 true true parallel: This job succeeded: -par_halt_on_error -2 true true sleep 1;true -par_halt_on_error -2 true true parallel: This job succeeded: -par_halt_on_error -2 true true sleep 1;true -par_halt_on_error -2 true false 0 -par_halt_on_error -2 true false 0 -par_halt_on_error -2 true false parallel: This job succeeded: -par_halt_on_error -2 true false sleep 1;true -par_halt_on_error -2 true false parallel: This job succeeded: -par_halt_on_error -2 true false sleep 1;true -par_halt_on_error -2 false true 0 -par_halt_on_error -2 false true 0 -par_halt_on_error -2 false true parallel: This job succeeded: -par_halt_on_error -2 false true sleep 2;true -par_halt_on_error -2 false true parallel: This job succeeded: -par_halt_on_error -2 false true sleep 2;true -par_halt_on_error -2 false false 3 -par_halt_on_error -2 false false 4 -par_halt_on_error -2 false false /bin/bash: non_exist: command not found -par_halt_on_error -1 true true 0 -par_halt_on_error -1 true true 0 -par_halt_on_error -1 true true parallel: This job succeeded: -par_halt_on_error -1 true true sleep 1;true -par_halt_on_error -1 true true parallel: Starting no more jobs. Waiting for 2 jobs to finish. -par_halt_on_error -1 true true parallel: This job succeeded: -par_halt_on_error -1 true true sleep 2;true -par_halt_on_error -1 true true parallel: Starting no more jobs. Waiting for 1 jobs to finish. -par_halt_on_error -1 true true parallel: This job succeeded: -par_halt_on_error -1 true true sleep 3;true -par_halt_on_error -1 true true parallel: This job succeeded: -par_halt_on_error -1 true true sleep 1;true -par_halt_on_error -1 true true parallel: Starting no more jobs. Waiting for 3 jobs to finish. -par_halt_on_error -1 true true parallel: This job succeeded: -par_halt_on_error -1 true true sleep 2;true -par_halt_on_error -1 true true parallel: Starting no more jobs. Waiting for 2 jobs to finish. -par_halt_on_error -1 true true parallel: This job succeeded: -par_halt_on_error -1 true true sleep 3;true -par_halt_on_error -1 true true parallel: Starting no more jobs. Waiting for 1 jobs to finish. -par_halt_on_error -1 true true /bin/bash: non_exist: command not found -par_halt_on_error -1 true false 0 -par_halt_on_error -1 true false 0 -par_halt_on_error -1 true false parallel: This job succeeded: -par_halt_on_error -1 true false sleep 1;true -par_halt_on_error -1 true false parallel: Starting no more jobs. Waiting for 2 jobs to finish. -par_halt_on_error -1 true false parallel: This job succeeded: -par_halt_on_error -1 true false sleep 3;true -par_halt_on_error -1 true false parallel: This job succeeded: -par_halt_on_error -1 true false sleep 1;true -par_halt_on_error -1 true false parallel: Starting no more jobs. Waiting for 3 jobs to finish. -par_halt_on_error -1 true false parallel: This job succeeded: -par_halt_on_error -1 true false sleep 3;true -par_halt_on_error -1 true false parallel: Starting no more jobs. Waiting for 1 jobs to finish. -par_halt_on_error -1 true false /bin/bash: non_exist: command not found -par_halt_on_error -1 false true 0 -par_halt_on_error -1 false true 0 -par_halt_on_error -1 false true parallel: This job succeeded: -par_halt_on_error -1 false true sleep 2;true -par_halt_on_error -1 false true parallel: Starting no more jobs. Waiting for 1 jobs to finish. -par_halt_on_error -1 false true parallel: This job succeeded: -par_halt_on_error -1 false true sleep 2;true -par_halt_on_error -1 false true parallel: Starting no more jobs. Waiting for 2 jobs to finish. -par_halt_on_error -1 false true /bin/bash: non_exist: command not found -par_halt_on_error -1 false false 3 -par_halt_on_error -1 false false 4 -par_halt_on_error -1 false false /bin/bash: non_exist: command not found -par_halt_on_error 0 true true 0 -par_halt_on_error 0 true true 1 -par_halt_on_error 0 true true /bin/bash: non_exist: command not found -par_halt_on_error 0 true false 1 -par_halt_on_error 0 true false 2 -par_halt_on_error 0 true false /bin/bash: non_exist: command not found -par_halt_on_error 0 false true 2 -par_halt_on_error 0 false true 3 -par_halt_on_error 0 false true /bin/bash: non_exist: command not found -par_halt_on_error 0 false false 3 -par_halt_on_error 0 false false 4 -par_halt_on_error 0 false false /bin/bash: non_exist: command not found -par_halt_on_error 1 true true 0 -par_halt_on_error 1 true true 127 -par_halt_on_error 1 true true /bin/bash: non_exist: command not found -par_halt_on_error 1 true true parallel: This job failed: -par_halt_on_error 1 true true sleep 4;non_exist -par_halt_on_error 1 true false 1 -par_halt_on_error 1 true false 1 -par_halt_on_error 1 true false parallel: This job failed: -par_halt_on_error 1 true false sleep 2;false -par_halt_on_error 1 true false parallel: Starting no more jobs. Waiting for 1 jobs to finish. -par_halt_on_error 1 true false parallel: This job failed: -par_halt_on_error 1 true false sleep 2;false -par_halt_on_error 1 true false parallel: Starting no more jobs. Waiting for 2 jobs to finish. -par_halt_on_error 1 true false /bin/bash: non_exist: command not found -par_halt_on_error 1 true false parallel: This job failed: -par_halt_on_error 1 true false sleep 4;non_exist -par_halt_on_error 1 false true 1 -par_halt_on_error 1 false true 1 -par_halt_on_error 1 false true parallel: This job failed: -par_halt_on_error 1 false true sleep 1;false -par_halt_on_error 1 false true parallel: Starting no more jobs. Waiting for 2 jobs to finish. -par_halt_on_error 1 false true parallel: This job failed: -par_halt_on_error 1 false true sleep 3;false -par_halt_on_error 1 false true parallel: This job failed: -par_halt_on_error 1 false true sleep 1;false -par_halt_on_error 1 false true parallel: Starting no more jobs. Waiting for 3 jobs to finish. -par_halt_on_error 1 false true parallel: This job failed: -par_halt_on_error 1 false true sleep 3;false -par_halt_on_error 1 false true parallel: Starting no more jobs. Waiting for 1 jobs to finish. -par_halt_on_error 1 false true /bin/bash: non_exist: command not found -par_halt_on_error 1 false true parallel: This job failed: -par_halt_on_error 1 false true sleep 4;non_exist -par_halt_on_error 1 false false 1 -par_halt_on_error 1 false false 1 -par_halt_on_error 1 false false parallel: This job failed: -par_halt_on_error 1 false false sleep 1;false -par_halt_on_error 1 false false parallel: Starting no more jobs. Waiting for 2 jobs to finish. -par_halt_on_error 1 false false parallel: This job failed: -par_halt_on_error 1 false false sleep 2;false -par_halt_on_error 1 false false parallel: Starting no more jobs. Waiting for 1 jobs to finish. -par_halt_on_error 1 false false parallel: This job failed: -par_halt_on_error 1 false false sleep 3;false -par_halt_on_error 1 false false parallel: This job failed: -par_halt_on_error 1 false false sleep 1;false -par_halt_on_error 1 false false parallel: Starting no more jobs. Waiting for 3 jobs to finish. -par_halt_on_error 1 false false parallel: This job failed: -par_halt_on_error 1 false false sleep 2;false -par_halt_on_error 1 false false parallel: Starting no more jobs. Waiting for 2 jobs to finish. -par_halt_on_error 1 false false parallel: This job failed: -par_halt_on_error 1 false false sleep 3;false -par_halt_on_error 1 false false parallel: Starting no more jobs. Waiting for 1 jobs to finish. -par_halt_on_error 1 false false /bin/bash: non_exist: command not found -par_halt_on_error 1 false false parallel: This job failed: -par_halt_on_error 1 false false sleep 4;non_exist -par_halt_on_error 2 true true 0 -par_halt_on_error 2 true true 127 -par_halt_on_error 2 true true /bin/bash: non_exist: command not found -par_halt_on_error 2 true true parallel: This job failed: -par_halt_on_error 2 true true sleep 4;non_exist -par_halt_on_error 2 true false 1 -par_halt_on_error 2 true false 1 -par_halt_on_error 2 true false parallel: This job failed: -par_halt_on_error 2 true false sleep 2;false -par_halt_on_error 2 true false parallel: This job failed: -par_halt_on_error 2 true false sleep 2;false -par_halt_on_error 2 false true 1 -par_halt_on_error 2 false true 1 -par_halt_on_error 2 false true parallel: This job failed: -par_halt_on_error 2 false true sleep 1;false -par_halt_on_error 2 false true parallel: This job failed: -par_halt_on_error 2 false true sleep 1;false -par_halt_on_error 2 false false 1 -par_halt_on_error 2 false false 1 -par_halt_on_error 2 false false parallel: This job failed: -par_halt_on_error 2 false false sleep 1;false -par_halt_on_error 2 false false parallel: This job failed: -par_halt_on_error 2 false false sleep 1;false par_interactive ### Test -p --interactive par_interactive opt--interactive 1 par_interactive opt--interactive 3 @@ -273,10 +27,12 @@ par_interactive sleep 0.1; echo opt-p 2 ?...n par_interactive sleep 0.1; echo opt-p 3 ?...y par_interactive spawn /tmp/parallel-script-for-expect par_k ### Test -k -par_k parallel: Warning: Only enough file handles to run 8 jobs in parallel. -par_k parallel: Warning: Running 'parallel -j0 -N 8 --pipe parallel -j0' or +par_k parallel: Warning: Only enough file handles to run 9 jobs in parallel. +par_k parallel: Warning: Running 'parallel -j0 -N 9 --pipe parallel -j0' or par_k parallel: Warning: raising 'ulimit -n' or 'nofile' in /etc/security/limits.conf par_k parallel: Warning: or /proc/sys/fs/file-max may help. +par_k parallel: Warning: No more file handles. +par_k parallel: Warning: Raising ulimit -n or /etc/security/limits.conf may help. par_k begin par_k 1 par_k 2 @@ -556,10 +312,10 @@ par_results_compress 0 par_results_compress 1 par_results_csv bug #: --results csv par_results_csv --header : --tag --lb --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr -par_results_csv --header : --tag --lb --files --compress 1,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --header : --tag --lb --files --compress 2,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --header : --tag --lb --files --compress 3,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --header : --tag --lb --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --lb --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --lb --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --lb --files --compress 3,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --lb --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", par_results_csv --header : --tag --lb --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr par_results_csv --header : --tag --lb --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", par_results_csv --header : --tag --lb --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", @@ -584,10 +340,10 @@ par_results_csv --header : --tag --lb ", par_results_csv --header : --tag --lb 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12 par_results_csv --header : --tag --lb ", par_results_csv --header : --tag --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr -par_results_csv --header : --tag --files --compress 1,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --header : --tag --files --compress 2,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --header : --tag --files --compress 3,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --header : --tag --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --files --compress 3,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", par_results_csv --header : --tag --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr par_results_csv --header : --tag --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", par_results_csv --header : --tag --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", @@ -612,10 +368,10 @@ par_results_csv --header : --tag ", par_results_csv --header : --tag 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12 par_results_csv --header : --tag ", par_results_csv --header : --lb --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr -par_results_csv --header : --lb --files --compress 1,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --header : --lb --files --compress 2,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --header : --lb --files --compress 3,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --header : --lb --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --lb --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --lb --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --lb --files --compress 3,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --lb --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, par_results_csv --header : --lb --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr par_results_csv --header : --lb --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, par_results_csv --header : --lb --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, @@ -640,10 +396,10 @@ par_results_csv --header : --lb ", par_results_csv --header : --lb 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 par_results_csv --header : --lb ", par_results_csv --header : --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr -par_results_csv --header : --files --compress 1,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --header : --files --compress 2,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --header : --files --compress 3,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --header : --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --files --compress 3,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, par_results_csv --header : --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr par_results_csv --header : --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, par_results_csv --header : --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, @@ -668,15 +424,15 @@ par_results_csv --header : ", par_results_csv --header : 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 par_results_csv --header : ", par_results_csv --tag --lb --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr -par_results_csv --tag --lb --files --compress 1,:,999.999,999.999,0,31,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --lb --files --compress 2,:,999.999,999.999,0,31,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --lb --files --compress 3,:,999.999,999.999,0,31,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --lb --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --lb --files --compress 5,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --lb --files --compress 6,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --lb --files --compress 7,:,999.999,999.999,0,31,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --lb --files --compress 8,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --lb --files --compress 9,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files --compress 3,:,999.999,999.999,0,15,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files --compress 5,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files --compress 6,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files --compress 7,:,999.999,999.999,0,15,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files --compress 8,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --lb --files --compress 9,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", par_results_csv --tag --lb --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr par_results_csv --tag --lb --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", par_results_csv --tag --lb --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile", @@ -726,15 +482,15 @@ par_results_csv --tag --lb ", par_results_csv --tag --lb 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12 par_results_csv --tag --lb ", par_results_csv --tag --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr -par_results_csv --tag --files --compress 1,:,999.999,999.999,0,31,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --files --compress 2,:,999.999,999.999,0,31,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --files --compress 3,:,999.999,999.999,0,31,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --files --compress 5,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --files --compress 6,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --files --compress 7,:,999.999,999.999,0,31,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --files --compress 8,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --files --compress 9,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 3,:,999.999,999.999,0,15,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 5,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 6,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 7,:,999.999,999.999,0,15,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 8,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 9,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", par_results_csv --tag --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr par_results_csv --tag --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", par_results_csv --tag --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile", @@ -784,15 +540,15 @@ par_results_csv --tag ", par_results_csv --tag 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12 par_results_csv --tag ", par_results_csv --lb --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr -par_results_csv --lb --files --compress 1,:,999.999,999.999,0,31,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --lb --files --compress 2,:,999.999,999.999,0,31,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --lb --files --compress 3,:,999.999,999.999,0,31,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --lb --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --lb --files --compress 5,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --lb --files --compress 6,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --lb --files --compress 7,:,999.999,999.999,0,31,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --lb --files --compress 8,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --lb --files --compress 9,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files --compress 3,:,999.999,999.999,0,15,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files --compress 5,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files --compress 6,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files --compress 7,:,999.999,999.999,0,15,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files --compress 8,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --lb --files --compress 9,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, par_results_csv --lb --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr par_results_csv --lb --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, par_results_csv --lb --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile, @@ -842,15 +598,15 @@ par_results_csv --lb ", par_results_csv --lb 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 par_results_csv --lb ", par_results_csv --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr -par_results_csv --files --compress 1,:,999.999,999.999,0,31,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --files --compress 2,:,999.999,999.999,0,31,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --files --compress 3,:,999.999,999.999,0,31,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --files --compress 5,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --files --compress 6,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --files --compress 7,:,999.999,999.999,0,31,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --files --compress 8,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --files --compress 9,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 3,:,999.999,999.999,0,15,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 5,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 6,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 7,:,999.999,999.999,0,15,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 8,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 9,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, par_results_csv --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr par_results_csv --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, par_results_csv --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile, diff --git a/testsuite/wanted-results/parallel-local-30s b/testsuite/wanted-results/parallel-local-30s index b03f15b0..20db9332 100644 --- a/testsuite/wanted-results/parallel-local-30s +++ b/testsuite/wanted-results/parallel-local-30s @@ -1,6 +1,4 @@ par_linebuffer_matters_compress ### (--linebuffer) --compress should give different output -par_linebuffer_matters_compress environment: line 8: warning: command substitution: ignored null byte in input -par_linebuffer_matters_compress environment: line 11: warning: command substitution: ignored null byte in input par_linebuffer_matters_compress OK: --linebuffer makes a difference par_linebuffer_matters_compress_tag ### (--linebuffer) --compress --tag should give different output par_linebuffer_matters_compress_tag OK: --linebuffer makes a difference diff --git a/testsuite/wanted-results/parallel-local-race02 b/testsuite/wanted-results/parallel-local-race02 index e168d4c3..1b83a881 100644 --- a/testsuite/wanted-results/parallel-local-race02 +++ b/testsuite/wanted-results/parallel-local-race02 @@ -2,14 +2,14 @@ bug #46120: Suspend should suspend (at least local) children it should burn 1.9 CPU seconds, but no more than that The 5 second sleep will make it be killed by timeout when it fgs -stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" ::: 1 | grep --color=auto -q CPUTIME=1 +stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" ::: 1 | grep -q CPUTIME=1 Zero=OK 0 -echo 1 | stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" | grep --color=auto -q CPUTIME=1 +echo 1 | stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" | grep -q CPUTIME=1 Zero=OK 0 Control case: Burn for 2.9 seconds -stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" ::: 1 | grep --color=auto -q CPUTIME=1 +stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" ::: 1 | grep -q CPUTIME=1 1=OK 1 par_hostgroup ### --hostgroup force ncpu par_hostgroup parallel @@ -23,7 +23,7 @@ par_hostgroup tange par_hostgroup ### --hostgroup two group arg par_hostgroup parallel par_hostgroup parallel -par_hostgroup parallel +par_hostgroup tange par_hostgroup tange par_hostgroup tange par_hostgroup tange @@ -41,7 +41,7 @@ par_hostgroup tange par_hostgroup ### --hostgroup multiple group arg + unused group par_hostgroup parallel par_hostgroup parallel -par_hostgroup parallel +par_hostgroup tange par_hostgroup tange par_hostgroup tange par_hostgroup tange @@ -62,21 +62,21 @@ par_hostgroup implicit_group par_hostgroup ### --hostgroup -S @group par_hostgroup tange par_hostgroup tange -par_hostgroup tcsh +par_hostgroup tange par_hostgroup tcsh par_hostgroup tcsh par_hostgroup tcsh par_hostgroup ### --hostgroup -S @group1 -Sgrp2 par_hostgroup parallel par_hostgroup parallel -par_hostgroup parallel +par_hostgroup tange par_hostgroup tange par_hostgroup tcsh par_hostgroup tcsh par_hostgroup ### --hostgroup -S @group1+grp2 par_hostgroup parallel par_hostgroup parallel -par_hostgroup parallel +par_hostgroup tange par_hostgroup tange par_hostgroup tcsh par_hostgroup tcsh @@ -1196,9 +1196,6 @@ par_testhalt soon done 0 false echo job 2; sleep 0.9; exit 0 par_testhalt soon done 0 false job 3 par_testhalt soon done 0 false parallel: This job finished: par_testhalt soon done 0 false echo job 3; sleep 1.2; exit 0 -par_testhalt soon done 0 false job 4 -par_testhalt soon done 0 false parallel: This job finished: -par_testhalt soon done 0 false echo job 4; sleep 1.5; exit 0 par_testhalt soon done 0 false 0 par_testhalt soon done 1 true ### testhalt --halt soon,done=1 par_testhalt soon done 1 true job 1 @@ -1224,9 +1221,6 @@ par_testhalt soon done 1 false echo job 2; sleep 0.9; exit 0 par_testhalt soon done 1 false job 3 par_testhalt soon done 1 false parallel: This job finished: par_testhalt soon done 1 false echo job 3; sleep 1.2; exit 0 -par_testhalt soon done 1 false job 4 -par_testhalt soon done 1 false parallel: This job finished: -par_testhalt soon done 1 false echo job 4; sleep 1.5; exit 0 par_testhalt soon done 1 false 0 par_testhalt soon done 2 true ### testhalt --halt soon,done=2 par_testhalt soon done 2 true job 1 diff --git a/testsuite/wanted-results/parallel-local-ssh5 b/testsuite/wanted-results/parallel-local-ssh5 index 7952181a..3dd3e1f8 100644 --- a/testsuite/wanted-results/parallel-local-ssh5 +++ b/testsuite/wanted-results/parallel-local-ssh5 @@ -34,7 +34,7 @@ Environment variables are: stderr rsync: connection unexpectedly closed (0 bytes received so far) [sender] -rsync error: error in rsync protocol data stream (code 12) at io.c(235) [sender=3.1.2] +rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1] /usr/lib/autossh/autossh: invalid option -- '-' usage: autossh [-V] [-M monitor_port[:echo_port]] [-f] [SSH_OPTIONS] @@ -66,7 +66,7 @@ Environment variables are: stderr rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] -rsync error: error in rsync protocol data stream (code 12) at io.c(235) [Receiver=3.1.2] +rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.1] echo '### bug #46520: --basefile cleans up without --cleanup' ### bug #46520: --basefile cleans up without --cleanup touch bug_46520; parallel -S parallel@lo --bf bug_46520 ls ::: bug_46520; ssh parallel@lo ls bug_46520; parallel -S parallel@lo --cleanup --bf bug_46520 ls ::: bug_46520; stdout ssh parallel@lo ls bug_46520 # should not exist diff --git a/testsuite/wanted-results/parallel-local-ssh7 b/testsuite/wanted-results/parallel-local-ssh7 index 6c2219dd..cce9b414 100644 --- a/testsuite/wanted-results/parallel-local-ssh7 +++ b/testsuite/wanted-results/parallel-local-ssh7 @@ -40,8 +40,6 @@ par_bash_environment_too_big OK par_bash_environment_too_big OK par_bash_environment_too_big OK par_bash_environment_too_big OK -par_bash_environment_too_big OK -par_bash_environment_too_big OK par_bash_environment_too_big /usr/local/bin/env_parallel.bash: line 168: /usr/bin/which: Argument list too long par_bash_environment_too_big env_parallel: Error: Your environment is too big. par_bash_environment_too_big env_parallel: Error: Try running this in a clean environment once: @@ -79,11 +77,13 @@ par_bash_environment_too_big env_parallel: Error: env_parallel --record-env par_bash_environment_too_big env_parallel: Error: And the use '--env _' par_bash_environment_too_big env_parallel: Error: For details see: man env_parallel par_bash_funky +par_bash_funky +par_bash_funky par_bash_funky \\\\\\\\ par_bash_funky  par_bash_funky  -par_bash_funky -funkymultiline -par_bash_funky -funkymultiline +par_bash_funky +par_bash_funky par_bash_funky space 6 par_bash_funky space 6 par_bash_funky 3 arg alias_works @@ -100,6 +100,8 @@ par_bash_funky function_works par_bash_funky function_works_over_ssh par_bash_funky myvar works par_bash_funky myvar works +par_bash_funky -funkymultiline +par_bash_funky -funkymultiline par_bash_man ### bash par_bash_man ### From man env_parallel par_bash_man aliases work @@ -137,21 +139,21 @@ par_bash_underscore variables in aliases in and arrays in functions work par_bash_underscore variables in aliases in and arrays in functions work par_bash_underscore variables in aliases in and arrays in functions work par_bash_underscore variables in aliases in and arrays in functions work -par_bash_underscore /bin/bash: line 57: not_copied_alias: command not found -par_bash_underscore /bin/bash: line 57: not_copied_func: command not found +par_bash_underscore /bin/bash: line 56: not_copied_alias: command not found +par_bash_underscore /bin/bash: line 56: not_copied_func: command not found par_bash_underscore error=OK par_bash_underscore error=OK par_bash_underscore aliases in and arrays in functions work par_bash_underscore aliases in and arrays in functions work par_bash_underscore aliases in functions work par_bash_underscore aliases in functions work -par_bash_underscore environment: line 51: myecho: command not found +par_bash_underscore /bin/bash: line 49: myecho: command not found par_bash_underscore OK if no myecho ^^^^^^^^^^^^^^^^^^^^^^^^^ -par_bash_underscore environment: line 51: myecho: command not found +par_bash_underscore /bin/bash: line 49: myecho: command not found par_bash_underscore OK if no myecho ^^^^^^^^^^^^^^^^^^^^^^^^^ -par_bash_underscore /bin/bash: line 50: myfunc: command not found +par_bash_underscore /bin/bash: line 49: myfunc: command not found par_bash_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^^^^^^^^^ -par_bash_underscore /bin/bash: line 50: myfunc: command not found +par_bash_underscore /bin/bash: line 49: myfunc: command not found par_bash_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^^^^^^^^^ par_csh_env_parallel_fifo bug #50435: Remote fifo broke in 20150522 par_csh_env_parallel_fifo data from stdin @@ -540,7 +542,7 @@ par_tcsh_funky par_tcsh_funky 3 arg alias_works par_tcsh_funky 3 arg alias_works_over_ssh par_tcsh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funky alias_var_works -par_tcsh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ-funky alias_var_works_over_ssh +par_tcsh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funky alias_var_works_over_ssh par_tcsh_funky \\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ par_tcsh_funky func_echo: Command not found. par_tcsh_funky func_echo: Command not found. diff --git a/testsuite/wanted-results/parallel-local-ssh8 b/testsuite/wanted-results/parallel-local-ssh8 index 38df203c..80139c22 100644 --- a/testsuite/wanted-results/parallel-local-ssh8 +++ b/testsuite/wanted-results/parallel-local-ssh8 @@ -9,7 +9,6 @@ par_keeporder job2 par_load_csh ### Gave Word too long. par_load_csh a par_path_remote_bash bug #47695: How to set $PATH on remote? Bash -par_path_remote_bash par_path_remote_bash BASH Path before: /bin:/usr/bin with no parallel par_path_remote_bash -bash: line 2: parallel: command not found par_path_remote_bash ^^^^^^^^ Not found is OK diff --git a/testsuite/wanted-results/parallel-local12 b/testsuite/wanted-results/parallel-local12 index 6c3125c8..85475fc4 100644 --- a/testsuite/wanted-results/parallel-local12 +++ b/testsuite/wanted-results/parallel-local12 @@ -35,7 +35,7 @@ If you pay 10000 EUR you should feel free to use GNU Parallel without citing. To silence this citation notice: run 'parallel --citation'. 10 files to edit -[?1049h[?1h=[?12;25h[?12l[?25h[?25l"file1" [New File]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25lE173: 9 more files to edit[?12l[?25h[?1l>[?1049lAcademic tradition requires you to cite works you base your article on. +[?1049h[?1h=[?12;25h[?12l[?25h[?25l"file1" [New File]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25lE173: 9 more files to edit[?12l[?25h[?1l>[?1049lAcademic 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: diff --git a/testsuite/wanted-results/parallel-local150 b/testsuite/wanted-results/parallel-local150 index 9c8234d2..c04db525 100644 --- a/testsuite/wanted-results/parallel-local150 +++ b/testsuite/wanted-results/parallel-local150 @@ -146,8 +146,8 @@ echo '### Test make .deb package'; cd ~/privat/parallel/packager/debian; std To install the GNU Parallel Debian package, run: echo '### Test of segfaulting issue' ### Test of segfaulting issue - echo 'This gave ~/bin/stdout: line 3: 20374 Segmentation fault "$@" 2>&1'; echo 'before adding wait() before exit'; seq 1 300 | stdout parallel ./trysegfault -This gave ~/bin/stdout: line 3: 20374 Segmentation fault "$@" 2>&1 + echo 'This gave /home/tange/bin/stdout: line 3: 20374 Segmentation fault "$@" 2>&1'; echo 'before adding wait() before exit'; seq 1 300 | stdout parallel ./trysegfault +This gave /home/tange/bin/stdout: line 3: 20374 Segmentation fault "$@" 2>&1 before adding wait() before exit echo '### Test basic --arg-sep' ### Test basic --arg-sep diff --git a/testsuite/wanted-results/parallel-local18 b/testsuite/wanted-results/parallel-local18 index d26bdeb1..e7dc95bf 100644 --- a/testsuite/wanted-results/parallel-local18 +++ b/testsuite/wanted-results/parallel-local18 @@ -7,8 +7,6 @@ par_env_newline_backslash_bash 8 par_env_newline_backslash_csh ### Test --env for \n and \\ - single and double (*csh only) - no output is good but csh fails par_env_newline_backslash_csh 2 2\ \92V2=\ \92 par_env_newline_backslash_csh 2 2\\ \92V2=\\ \92 -par_env_newline_backslash_csh 2 Unmatched ". -par_env_newline_backslash_csh 2 Unmatched '"'. par_env_newline_backslash_onall_bash ### Test --env for \n and \\ - single and double --onall (bash only) - no output is good par_env_newline_backslash_onall_bash 16 par_env_newline_backslash_onall_bash 16 @@ -17,6 +15,7 @@ par_env_newline_backslash_onall_bash 8 10 par_env_newline_backslash_onall_bash 8 10V2= par_env_newline_backslash_onall_bash 8 2\\ \92V2=\\ \92 par_env_newline_backslash_onall_csh ### Test --env for \n and \\ - single and double --onall (*csh only) - no output is good but csh fails +par_env_newline_backslash_onall_csh 8 Unmatched ". par_space ### Test --env - https://savannah.gnu.org/bugs/?37351 par_space a 2 spaces b 1 par_space a 2 spaces b 1 diff --git a/testsuite/wanted-results/parallel-local9 b/testsuite/wanted-results/parallel-local9 index e8941d2c..f1271cc8 100644 --- a/testsuite/wanted-results/parallel-local9 +++ b/testsuite/wanted-results/parallel-local9 @@ -63,7 +63,7 @@ echo '### Test --number-of-cpus'; stdout $NICEPAR --number-of-cpus 1 echo '### Test --number-of-cores'; stdout $NICEPAR --number-of-cores ### Test --number-of-cores -2 +8 echo '### Test --use-cpus-instead-of-cores'; (seq 1 8 | stdout parallel --use-cpus-instead-of-cores -j100% sleep) && echo CPUs done & (seq 1 8 | stdout parallel -j100% sleep) && echo cores done & echo 'Cores should complete first on machines with less than 8 physical CPUs'; wait ### Test --use-cpus-instead-of-cores Cores should complete first on machines with less than 8 physical CPUs diff --git a/testsuite/wanted-results/parallel-tutorial b/testsuite/wanted-results/parallel-tutorial index 2f43fb65..e542b65e 100644 --- a/testsuite/wanted-results/parallel-tutorial +++ b/testsuite/wanted-results/parallel-tutorial @@ -979,6 +979,21 @@ For details: see man env_parallel parallel -vv --workdir ... --nice 17 --env _ --trc {}.out \ -S $SERVER1 my_func3 {} ::: abc-file ssh -l parallel lo -- mkdir -p ./.TMPWORKDIR && rsync --protocol 30 -rlDzR -essh\ -l\ parallel ./abc-file lo:./.TMPWORKDIR;ssh -l parallel lo -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$chld\\\=\\\$SIG\\\{CHLD\\\}\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\$chld\\\;eval\\\$eval\\\; BASE64;_EXIT_status=$?; mkdir -p ./. && rsync --protocol 30 --rsync-path=cd\ ./.TMPWORKDIR/./.\;\ rsync -rlDzR -essh\ -l\ parallel lo:./abc-file.out ./.;ssh -l parallel lo -- rm\ -f\ ./.TMPWORKDIR/abc-file\;\ sh\ -c\ rmdir\\\ ./.TMPWORKDIR/\\\ ./.parallel/tmp/\\\ ./.parallel/\\\ 2\\\>/dev/null\\\;rm\\\ -rf\\\ ./.TMPWORKDIR\\\;;ssh -l parallel lo -- rm\ -f\ ./.TMPWORKDIR/abc-file.out\;\ sh\ -c\ rmdir\\\ ./.TMPWORKDIR/\\\ ./.parallel/tmp/\\\ ./.parallel/\\\ 2\\\>/dev/null\\\;rm\\\ -rf\\\ ./.TMPWORKDIR\\\;;ssh -l parallel lo -- rm -rf .TMPWORKDIR; exit $_EXIT_status; + parset myvar1,myvar2 echo ::: a b + echo $myvar1 + echo $myvar2 + +/bin/bash: parset: command not found + parset myarray seq {} 5 ::: 1 2 3 + echo "${myarray[1]}" + +/bin/bash: parset: command not found + cmd=("echo '<>'" "pwd") + parset data ::: "${cmd[@]}" + echo "${data[0]}" + echo "${data[1]}" + +/bin/bash: line 1: parset: command not found parallel --sqlandworker csv:////%2Ftmp%2Flog.csv \ seq ::: 10 ::: 12 13 14 cat /tmp/log.csv @@ -1298,8 +1313,8 @@ With --plus: {} = {+/}/{/} = {.}.{+.} = {+/}/{/.}.{+.} = {..}.{+..} = See 'man parallel' for details Academic tradition requires you to cite works you base your article on. -When using programs that use GNU Parallel to process data for publication -please cite: +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. @@ -1325,8 +1340,8 @@ VERSION Your version is at least VERSION. parallel --citation Academic tradition requires you to cite works you base your article on. -When using programs that use GNU Parallel to process data for publication -please cite: +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}, From 3a0cc34b8b8ea118c51144e1047409217b2e7d46 Mon Sep 17 00:00:00 2001 From: Ole Tange Date: Fri, 21 Jul 2017 23:29:19 +0200 Subject: [PATCH 2/3] Released as 20170722 ('Grenfell') --- NEWS | 31 +++++++++++++++++++ README | 12 +++---- configure | 20 ++++++------ configure.ac | 2 +- doc/release_new_version | 11 +++---- packager/obs/home:tange/parallel/.osc/_files | 13 +++----- .../home:tange/parallel/.osc/parallel.spec | 2 +- .../obs/home:tange/parallel/parallel.spec | 2 +- src/niceload | 2 +- src/parallel | 2 +- src/sql | 2 +- testsuite/tests-to-run/parallel-polarhome.sh | 25 +++++++++++---- 12 files changed, 82 insertions(+), 42 deletions(-) diff --git a/NEWS b/NEWS index 3d94538e..14262a0b 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,36 @@ 20170622 +* Vote for GNU Parallel's community ads on + http://meta.unix.stackexchange.com/a/4356/2972 + http://meta.askubuntu.com/a/16750/22307 + http://meta.serverfault.com/a/9040/45704 + +* GNU Parallel was cited in: Hayabusa: Simple and Fast Full-Text + Search Engine for Massive System Log Data + http://dl.acm.org/citation.cfm?id=3095788 + +* コマンドの並列化を行える『GNU parallel』の個人的使い方まとめ + https://orebibou.com/2017/07/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E4%B8%A6%E5%88%97%E5%8C%96%E3%82%92%E8%A1%8C%E3%81%88%E3%82%8B%E3%80%8Egnu-parallel%E3%80%8F%E3%81%AE%E5%80%8B%E4%BA%BA%E7%9A%84%E4%BD%BF%E3%81%84/ + +* How to play and play with thousands of digitized 78rpm records + https://blog.archive.org/2017/07/10/how-to-play-and-play-with-78rpm-record-transfers/ + +* 并行一个for循环 https://gxnotes.com/article/130363.html + +* RFC 8142: GeoJSON Text Sequences + https://sgillies.net/2017/05/18/rfc-8142-geojson-text-sequences.html + +* Git auto fetch script I run every day + https://lukas.zapletalovi.com/2017/07/git-auto-fetch-script-i-run-every-day.html + +* cores, cpus and threads + http://crazyhottommy.blogspot.de/2017/07/cores-cpus-and-threads.html + +* Bug fixes and man page updates. + + +20170622 + * The command line can now contain \257 (Macron) or UTF characters containing \257. diff --git a/README b/README index affb7318..9dfc7347 100644 --- a/README +++ b/README @@ -44,9 +44,9 @@ document. Full installation of GNU Parallel is as simple as: - wget http://ftpmirror.gnu.org/parallel/parallel-20170622.tar.bz2 - bzip2 -dc parallel-20170622.tar.bz2 | tar xvf - - cd parallel-20170622 + wget http://ftpmirror.gnu.org/parallel/parallel-20170722.tar.bz2 + bzip2 -dc parallel-20170722.tar.bz2 | tar xvf - + cd parallel-20170722 ./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 http://ftpmirror.gnu.org/parallel/parallel-20170622.tar.bz2 - bzip2 -dc parallel-20170622.tar.bz2 | tar xvf - - cd parallel-20170622 + wget http://ftpmirror.gnu.org/parallel/parallel-20170722.tar.bz2 + bzip2 -dc parallel-20170722.tar.bz2 | tar xvf - + cd parallel-20170722 ./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 f2ff2054..3c5d828a 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 20170622. +# Generated by GNU Autoconf 2.69 for parallel 20170722. # # Report bugs to . # @@ -579,8 +579,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='parallel' PACKAGE_TARNAME='parallel' -PACKAGE_VERSION='20170622' -PACKAGE_STRING='parallel 20170622' +PACKAGE_VERSION='20170722' +PACKAGE_STRING='parallel 20170722' 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 20170622 to adapt to many kinds of systems. +\`configure' configures parallel 20170722 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 20170622:";; + short | recursive ) echo "Configuration of parallel 20170722:";; 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 20170622 +parallel configure 20170722 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 20170622, which was +It was created by parallel $as_me 20170722, 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='20170622' + VERSION='20170722' 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 20170622, which was +This file was extended by parallel $as_me 20170722, 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 20170622 +parallel config.status 20170722 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 939cfb77..8142df76 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([parallel], [20170622], [bug-parallel@gnu.org]) +AC_INIT([parallel], [20170722], [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 66afc4a9..b68424dd 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -202,10 +202,11 @@ GNU Parallel 20170622 ('Grenfell') <<[stable]>> has been released. It is availab <> -Haiku of the month: +Quote of the month: -I don't care -I just need to get shit done + I don't care + I just need to get shit done + -- Sab New in this release: @@ -214,9 +215,7 @@ New in this release: http://meta.askubuntu.com/a/16750/22307 http://meta.serverfault.com/a/9040/45704 -* GNU Parallel was cited in: - -* GNU Parallel was used in: https://libraries.io/rubygems/aai +* GNU Parallel was cited in: Hayabusa: Simple and Fast Full-Text Search Engine for Massive System Log Data http://dl.acm.org/citation.cfm?id=3095788 * コマンドの並列化を行える『GNU parallel』の個人的使い方まとめhttps://orebibou.com/2017/07/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AE%E4%B8%A6%E5%88%97%E5%8C%96%E3%82%92%E8%A1%8C%E3%81%88%E3%82%8B%E3%80%8Egnu-parallel%E3%80%8F%E3%81%AE%E5%80%8B%E4%BA%BA%E7%9A%84%E4%BD%BF%E3%81%84/ diff --git a/packager/obs/home:tange/parallel/.osc/_files b/packager/obs/home:tange/parallel/.osc/_files index 7985dcf0..bef9d93f 100644 --- a/packager/obs/home:tange/parallel/.osc/_files +++ b/packager/obs/home:tange/parallel/.osc/_files @@ -1,9 +1,6 @@ - - - - - - - - + + + + + diff --git a/packager/obs/home:tange/parallel/.osc/parallel.spec b/packager/obs/home:tange/parallel/.osc/parallel.spec index 79d159ce..432c4e2c 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: 20170622 +Version: 20170722 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 79d159ce..432c4e2c 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: 20170622 +Version: 20170722 Release: 1.2 License: GPL Group: Productivity/File utilities diff --git a/src/niceload b/src/niceload index 3f76ead8..64ac6219 100755 --- a/src/niceload +++ b/src/niceload @@ -24,7 +24,7 @@ use strict; use Getopt::Long; $Global::progname="niceload"; -$Global::version = 20170623; +$Global::version = 20170722; 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 c560bf41..2bd86e82 100755 --- a/src/parallel +++ b/src/parallel @@ -1376,7 +1376,7 @@ sub check_invalid_option_combinations { sub init_globals { # Defaults: - $Global::version = 20170707; + $Global::version = 20170722; $Global::progname = 'parallel'; $Global::infinity = 2**31; $Global::debug = 0; diff --git a/src/sql b/src/sql index 820cd1c9..b4d04133 100755 --- a/src/sql +++ b/src/sql @@ -576,7 +576,7 @@ $Global::Initfile && unlink $Global::Initfile; exit ($err); sub parse_options { - $Global::version = 20170623; + $Global::version = 20170722; $Global::progname = 'sql'; # This must be done first as this may exec myself diff --git a/testsuite/tests-to-run/parallel-polarhome.sh b/testsuite/tests-to-run/parallel-polarhome.sh index bfd54ebf..7dcb20ba 100755 --- a/testsuite/tests-to-run/parallel-polarhome.sh +++ b/testsuite/tests-to-run/parallel-polarhome.sh @@ -2,11 +2,11 @@ # Check servers up on http://www.polarhome.com/service/status/ -P_ALL="tru64 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 hpux-ia64 vax alpha ultrix minix irix hurd beaglebone cubieboard2" +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="tru64 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" +P_WORKING="tru64 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" P_TEMPORARILY_BROKEN="minix hurd hpux-ia64 dragonfly" P="$P_WORKING" @@ -33,9 +33,22 @@ test_empty_cmd() { bin/perl bin/parallel echo ::: OK_with_empty_cmd } export -f test_empty_cmd -stdout parallel -j0 -k --retries $RETRIES --timeout $TIMEOUT --delay 0.1 --tag \ +stdout parallel -j0 -k --retries $RETRIES --timeout $TIMEOUT --delay 0.03 --tag \ --nonall --env test_empty_cmd -S macosx.polarhome.com test_empty_cmd > /tmp/test_empty_cmd & +copy() { + host=$1 + src="$2" + dst="$3" + cat "$src" | + stdout ssh -oLogLevel=quiet $host "cat > bin/'$dst'.tmp && chmod 755 bin/'$dst'.tmp && mv bin/'$dst'.tmp bin/'$dst'" +} +export -f copy +stdout parallel -j100 -r --retries $RETRIES --timeout $TIMEOUT --delay 0.1 --tag -v \ + copy {2} {1} {1/} \ + ::: /usr/local/bin/{parallel,env_parallel,env_parallel.*} \ + ::: $POLAR + copy_and_test() { H=$1 # scp to each polarhome machine does not work. Use cat @@ -70,9 +83,9 @@ echo echo '### env_parallel echo :::: <(echo OK)' echo '(bash only)' echo -parallel --retries $RETRIES --onall -j0 -k --tag --timeout $TIMEOUT $S_POLAR 'bin/env_parallel --install' -parallel --retries $RETRIES --onall -j0 -k --tag --timeout $TIMEOUT $S_POLAR 'env_parallel echo env_parallel ::: OK' -parallel --retries $RETRIES --onall -j0 -k --tag --timeout $TIMEOUT $S_POLAR 'env_parallel echo reading from process substitution :::: <(echo OK)' +parallel --retries $RETRIES --nonall -j0 -k --tag --timeout $TIMEOUT $S_POLAR 'bin/env_parallel --install' +parallel --retries $RETRIES --nonall -j0 -k --tag --timeout $TIMEOUT $S_POLAR 'env_parallel echo env_parallel ::: OK' +parallel --retries $RETRIES --nonall -j0 -k --tag --timeout $TIMEOUT $S_POLAR 'env_parallel echo reading from process substitution :::: <(echo OK)' # eval 'myfunc() { echo '$(perl -e 'print "x"x20000')'; }' # env_parallel myfunc ::: a | wc # OK From e90f98f1423816fb50c05c07790d403dc93f23ad Mon Sep 17 00:00:00 2001 From: Ole Tange Date: Sat, 22 Jul 2017 00:28:28 +0200 Subject: [PATCH 3/3] Post-release. --- NEWS | 2 +- src/parallel.pod | 34 +++++++++++++++++----------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/NEWS b/NEWS index 14262a0b..8602c310 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -20170622 +20170722 * Vote for GNU Parallel's community ads on http://meta.unix.stackexchange.com/a/4356/2972 diff --git a/src/parallel.pod b/src/parallel.pod index a144517a..92facd8e 100644 --- a/src/parallel.pod +++ b/src/parallel.pod @@ -95,7 +95,7 @@ B: Use B. The command cannot contain the character \257 (macron: ¯). -=item B<{}> (beta testing) +=item B<{}> Input line. This replacement string will be replaced by a full line read from the input source. The input source is normally stdin @@ -112,7 +112,7 @@ parsed by the shell. The exception is if the command starts with a replacement string; then the string is not quoted. -=item B<{.}> (beta testing) +=item B<{.}> Input line without extension. This replacement string will be replaced by the input with the extension removed. If the input line contains @@ -128,7 +128,7 @@ The replacement string B<{.}> can be changed with B<--er>. To understand replacement strings see B<{}>. -=item B<{/}> (beta testing) +=item B<{/}> Basename of input line. This replacement string will be replaced by the input with the directory part removed. @@ -139,7 +139,7 @@ B<--basenamereplace>. To understand replacement strings see B<{}>. -=item B<{//}> (beta testing) +=item B<{//}> Dirname of input line. This replacement string will be replaced by the dir of the input line. See B(1). @@ -150,7 +150,7 @@ B<--dirnamereplace>. To understand replacement strings see B<{}>. -=item B<{/.}> (beta testing) +=item B<{/.}> Basename of input line without extension. This replacement string will be replaced by the input with the directory and extension part @@ -162,7 +162,7 @@ B<--basenameextensionreplace>. To understand replacement strings see B<{}>. -=item B<{#}> (beta testing) +=item B<{#}> Sequence number of the job to run. This replacement string will be replaced by the sequence number of the job being run. It contains the @@ -173,7 +173,7 @@ The replacement string B<{#}> can be changed with B<--seqreplace>. To understand replacement strings see B<{}>. -=item B<{%}> (beta testing) +=item B<{%}> Job slot number. This replacement string will be replaced by the job's slot number between 1 and number of jobs to run in parallel. There @@ -185,7 +185,7 @@ The replacement string B<{%}> can be changed with B<--slotreplace>. To understand replacement strings see B<{}>. -=item B<{>IB<}> (beta testing) +=item B<{>IB<}> Argument from input source I or the I'th argument. This positional replacement string will be replaced by the input from input @@ -196,7 +196,7 @@ I'th last argument. To understand replacement strings see B<{}>. -=item B<{>I.B<}> (beta testing) +=item B<{>I.B<}> Argument from input source I or the I'th argument without extension. It is a combination of B<{>IB<}> and B<{.}>. @@ -209,7 +209,7 @@ extension removed. To understand positional replacement strings see B<{>IB<}>. -=item B<{>I/B<}> (beta testing) +=item B<{>I/B<}> Basename of argument from input source I or the I'th argument. It is a combination of B<{>IB<}> and B<{/}>. @@ -222,7 +222,7 @@ directory (if any) removed. To understand positional replacement strings see B<{>IB<}>. -=item B<{>I//B<}> (beta testing) +=item B<{>I//B<}> Dirname of argument from input source I or the I'th argument. It is a combination of B<{>IB<}> and B<{//}>. @@ -234,7 +234,7 @@ the I'th argument (when used with B<-N>). See B(1). To understand positional replacement strings see B<{>IB<}>. -=item B<{>I/.B<}> (beta testing) +=item B<{>I/.B<}> Basename of argument from input source I or the I'th argument without extension. It is a combination of B<{>IB<}>, B<{/}>, and @@ -248,7 +248,7 @@ directory (if any) and extension removed. To understand positional replacement strings see B<{>IB<}>. -=item B<{=>IB<=}> (beta testing) +=item B<{=>IB<=}> Replace with calculated I. B<$_> will contain the same as B<{}>. After evaluating I B<$_> will be used @@ -294,7 +294,7 @@ Example: See also: B<--rpl> B<--parens> -=item B<{=>I IB<=}> (beta testing) +=item B<{=>I IB<=}> Positional equivalent to B<{=perl expression=}>. To understand positional replacement strings see B<{>IB<}>. @@ -1083,7 +1083,7 @@ Arguments will be recycled if one input source has more arguments than the other See also B<--header>, B<:::+>, B<::::+>. -=item B<--load> I (beta testing) +=item B<--load> I Do not start new jobs on a given computer unless the number of running processes on the computer is less than I. I uses @@ -1261,7 +1261,7 @@ control on the command line (used by GNU B internally when called with B<--sshlogin>). -=item B<--plus> (beta testing) +=item B<--plus> Activate additional replacement strings: {+/} {+.} {+..} {+...} {..} {...} {/..} {/...} {##}. The idea being that '{+foo}' matches the opposite of @@ -1774,7 +1774,7 @@ impossible to track which input block corresponds to which output. B<--round-robin> implies B<--pipe>, except if B<--pipepart> is given. -=item B<--rpl> 'I I' (beta testing) +=item B<--rpl> 'I I' Use I as a replacement string for I. This makes it possible to define your own replacement strings. GNU B's