diff --git a/doc/release_new_version b/doc/release_new_version index 9469d69e..1764b484 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -234,7 +234,6 @@ New in this release pi.dk/2 See the intro videos pi.dk/1 10 secs installation: https://git.savannah.gnu.org/cgit/parallel.git/tree/README -[x] Twitter Aspect: Public GNU Parallel - for people who live life in the parallel lane. @@ -255,31 +254,32 @@ from:tange@gnu.org to:parallel@gnu.org, bug-parallel@gnu.org stable-bcc: Jesse Alama -Subject: GNU Parallel 20210922 ('<<>>Vindelev/Chris Donahue/Ida') released <<[stable]>> +Subject: GNU Parallel 20211022 ('<<>>Scholz') released <<[stable]>> -GNU Parallel 20210922 ('Vindelev') [stable] has been released. It is available for download at: lbry://@GnuParallel:4 +GNU Parallel 20211022 ('<<>>') <<[stable]>> has been released. It is available for download at: lbry://@GnuParallel:4 -No new functionality was introduced so this is a good candidate for a -stable release. +<> Quote of the month: - Take a look at GNU Parallel. It’s magnificent. - -- Siira@ycombinator.com + <<>> New in this release: + * Bug fixes and man page updates. + News about GNU Parallel: +https://medium.com/codex/3-programs-that-will-level-up-your-bash-game-bf14e17e2291 -* 3 Programs that will Level Up your Bash Game https://medium.com/codex/3-programs-that-will-level-up-your-bash-game-bf14e17e2291 +https://towardsdatascience.com/i-summarized-100-command-line-tools-for-data-scientists-in-15-minutes-976def544ffe +https://www.incredibuild.com/blog/speed-up-your-builds-by-parallelizing -* I Summarized 100+ Command-Line Tools for Data Scientists in 15 Minutes https://towardsdatascience.com/i-summarized-100-command-line-tools-for-data-scientists-in-15-minutes-976def544ffe +https://gist.github.com/dinh/93b936a55de9a331199d6582bc2921d2 -* Speed up Your Builds by Parallelizing https://www.incredibuild.com/blog/speed-up-your-builds-by-parallelizing -* Bash: GNU Parallel with Curl https://gist.github.com/dinh/93b936a55de9a331199d6582bc2921d2 Get the book: GNU Parallel 2018 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html diff --git a/src/env_parallel.ash b/src/env_parallel.ash index b4a76ae6..57270143 100755 --- a/src/env_parallel.ash +++ b/src/env_parallel.ash @@ -385,7 +385,7 @@ _parset_main() { return 255 fi if [ "$_parset_NAME" = "--version" ] ; then - echo "parset 20210922 (GNU parallel `parallel --minversion 1`)" + echo "parset 20210923 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.bash b/src/env_parallel.bash index eee7b482..ccafc168 100755 --- a/src/env_parallel.bash +++ b/src/env_parallel.bash @@ -384,7 +384,7 @@ _parset_main() { return 255 fi if [ "$_parset_NAME" = "--version" ] ; then - echo "parset 20210922 (GNU parallel `parallel --minversion 1`)" + echo "parset 20210923 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.dash b/src/env_parallel.dash index 9aaf2341..3bca452e 100755 --- a/src/env_parallel.dash +++ b/src/env_parallel.dash @@ -385,7 +385,7 @@ _parset_main() { return 255 fi if [ "$_parset_NAME" = "--version" ] ; then - echo "parset 20210922 (GNU parallel `parallel --minversion 1`)" + echo "parset 20210923 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.ksh b/src/env_parallel.ksh index eb5eb9ed..67521500 100755 --- a/src/env_parallel.ksh +++ b/src/env_parallel.ksh @@ -363,7 +363,7 @@ _parset_main() { return 255 fi if [ "$_parset_NAME" = "--version" ] ; then - echo "parset 20210922 (GNU parallel `parallel --minversion 1`)" + echo "parset 20210923 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.mksh b/src/env_parallel.mksh index c87fe6e7..3b51bc71 100644 --- a/src/env_parallel.mksh +++ b/src/env_parallel.mksh @@ -365,7 +365,7 @@ _parset_main() { return 255 fi if [ "$_parset_NAME" = "--version" ] ; then - echo "parset 20210922 (GNU parallel `parallel --minversion 1`)" + echo "parset 20210923 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.sh b/src/env_parallel.sh index 798893f4..0fe2f20e 100755 --- a/src/env_parallel.sh +++ b/src/env_parallel.sh @@ -390,7 +390,7 @@ _parset_main() { return 255 fi if [ "$_parset_NAME" = "--version" ] ; then - echo "parset 20210922 (GNU parallel `parallel --minversion 1`)" + echo "parset 20210923 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.zsh b/src/env_parallel.zsh index fb18607f..04ce6f36 100755 --- a/src/env_parallel.zsh +++ b/src/env_parallel.zsh @@ -355,7 +355,7 @@ _parset_main() { return 255 fi if [ "$_parset_NAME" = "--version" ] ; then - echo "parset 20210922 (GNU parallel `parallel --minversion 1`)" + echo "parset 20210923 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2021 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/niceload b/src/niceload index e4e2cee4..c3040847 100755 --- a/src/niceload +++ b/src/niceload @@ -26,7 +26,7 @@ use strict; use Getopt::Long; $Global::progname="niceload"; -$Global::version = 20210922; +$Global::version = 20210923; 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 97686149..969cd934 100755 --- a/src/parallel +++ b/src/parallel @@ -2244,7 +2244,7 @@ sub check_invalid_option_combinations() { sub init_globals() { # Defaults: - $Global::version = 20210922; + $Global::version = 20210923; $Global::progname = 'parallel'; $::name = "GNU Parallel"; $Global::infinity = 2**31; @@ -7263,6 +7263,9 @@ sub compute_number_of_processes($) { $count_jobs_already_read = $Global::JobQueue->next_seq(); my $wait_time_for_getting_args = 0; my $start_time = time; + if($wanted_processes < $Global::infinity) { + $Global::dummy_jobs = 1; + } while(1) { $system_limit >= $wanted_processes and last; not $more_filehandles and last; @@ -11577,7 +11580,6 @@ sub len($) { # Worst case is BASE64 encoding 3 bytes -> 4 bytes $len = int($len*4/3); } - return $len; } diff --git a/src/parallel.pod b/src/parallel.pod index 1be4e5ec..be8ad914 100644 --- a/src/parallel.pod +++ b/src/parallel.pod @@ -1197,8 +1197,17 @@ See also: B<--resume> B<--resume-failed>. =item B<-P> I Number of jobslots on each machine. Run up to N jobs in parallel. 0 -means as many as possible. Default is 100% which will run one job per -CPU on each machine. +means as many as possible (this can take a while to +determine). Default is 100% which will run one job per CPU on each +machine. + +Due to a bug B<-j 0> will also evaluate replacement strings twice up +to the number of joblots: + + # This will not count from 1 but from number-of-jobslots + seq 10000 | parallel -j0 echo '{= $_ = $foo++; =}' | head + # This will count from 1 + seq 10000 | parallel -j100 echo '{= $_ = $foo++; =}' | head If B<--semaphore> is set, the default is 1 thus making a mutex. @@ -4773,6 +4782,10 @@ computers: true >jobqueue; tail -n+0 -f jobqueue | parallel -S .. +Output only will be printed when reading the next input after a job +has finished: So you need to submit a job after the first has finished +to see the output from the first job. + If you keep this running for a long time, jobqueue will grow. A way of removing the jobs already run is by making GNU B stop when it hits a special value and then restart. To use B<--eof> to make GNU @@ -4802,20 +4815,6 @@ In some cases you can run on more CPUs and computers during the night: GNU B discovers if B or B<~/.parallel/sshloginfile> changes. -There is a a small issue when using GNU B as queue -system/batch manager: You have to submit JobSlot number of jobs before -they will start, and after that you can submit one at a time, and job -will start immediately if free slots are available. - -Output from the running or completed jobs are held back and will only -be printed when the next job is started (unless you use --ungroup or ---line-buffer, in which case the output from the jobs are printed -immediately). - -E.g. if you have 10 jobslots then the output from the first completed -job will only be printed when job 11 has started, and the output of -second completed job will only be printed when job 12 has started. - =head2 EXAMPLE: GNU Parallel as dir processor diff --git a/src/parsort b/src/parsort index 92854880..bdf7c308 100755 --- a/src/parsort +++ b/src/parsort @@ -122,7 +122,7 @@ GetOptions( "help" => \$opt::dummy, ) || exit(255); $Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1]; -$Global::version = 20210922; +$Global::version = 20210923; if($opt::version) { version(); exit 0; } @Global::sortoptions = shell_quote(@ARGV_before[0..($#ARGV_before-$#ARGV-1)]); diff --git a/src/sql b/src/sql index 89235bfa..b0837e7b 100755 --- a/src/sql +++ b/src/sql @@ -600,7 +600,7 @@ $Global::Initfile && unlink $Global::Initfile; exit ($err); sub parse_options { - $Global::version = 20210922; + $Global::version = 20210923; $Global::progname = 'sql'; # This must be done first as this may exec myself diff --git a/testsuite/tests-to-run/parallel-centos3.sh b/testsuite/tests-to-run/parallel-centos3.sh index f7a16bcd..9b3c6817 100644 --- a/testsuite/tests-to-run/parallel-centos3.sh +++ b/testsuite/tests-to-run/parallel-centos3.sh @@ -20,10 +20,12 @@ stdout ping -w 1 -c 1 centos3 >/dev/null || ( cd testsuite/vagrant/tange/centos3/ 2>/dev/null cd vagrant/tange/centos3/ 2>/dev/null cd ../vagrant/tange/centos3/ 2>/dev/null - stdout vagrant up >/dev/null - vagrant ssh -c 'sudo ifconfig eth1 172.27.27.3' | - # Ignore empty ^M line - grep .. + ( + stdout vagrant up >/dev/null + vagrant ssh -c 'sudo ifconfig eth1 172.27.27.3' | + # Ignore empty ^M line + grep .. + ) & ) ( # Copy binaries to server diff --git a/testsuite/tests-to-run/parallel-local-0.3s.sh b/testsuite/tests-to-run/parallel-local-0.3s.sh index a4b24478..16a0ce53 100644 --- a/testsuite/tests-to-run/parallel-local-0.3s.sh +++ b/testsuite/tests-to-run/parallel-local-0.3s.sh @@ -16,6 +16,23 @@ export -f stdsort # Test amount of parallelization # parallel --shuf --jl /tmp/myjl -j1 'export JOBS={1};'bash tests-to-run/parallel-local-0.3s.sh ::: {1..16} ::: {1..5} +par_long_input() { + echo '### Long input lines should not fail if they are not used' + perl -e 'map { print "$_\t"."X"x100000 ."\t".uc($_)."\n" } (a..c)' | + parallel --colsep '\t' echo {1} + perl -e 'map { print "$_\t"."X"x100000 ."\t".uc($_)."\n" } (a..c)' | + parallel --colsep '\t' echo {3} + perl -e 'map { print "$_\t"."X"x100000 ."\t".uc($_)."\n" } (a..c)' | + parallel --colsep '\t' echo {1} {3} + + perl -e 'map { print "$_\t"."X"x1000000 ."\t".uc($_)."\n" } (a..c)' | + parallel --colsep '\t' echo {1} + perl -e 'map { print "$_\t"."X"x1000000 ."\t".uc($_)."\n" } (a..c)' | + parallel --colsep '\t' echo {3} + perl -e 'map { print "$_\t"."X"x1000000 ."\t".uc($_)."\n" } (a..c)' | + parallel --colsep '\t' echo {1} {3} +} + par_ctagstring() { echo '### --ctag --ctagstring should be different from --tag --tagstring' parallel --tag echo ::: 1 ::: a| wc -c @@ -92,7 +109,7 @@ EOF --tmpl "$tmp2"=/tmp/tmpl-{x}-{y}.t2 \ myprog {#}.t1 /tmp/tmpl-{x}-{y}.t2 \ ::: x 1.1 2.22 3.333 ::: y 111.111 222.222 333.333 | - perl -pe 's/0.\d{13,}/0.RANDOM_NUMBER/' | + perl -pe 's/0.\d{12,}/0.RANDOM_NUMBER/' | perl -pe 's/Slot: \d/Slot: X/' rm "$tmp1" "$tmp2" } diff --git a/testsuite/tests-to-run/parallel-local-1s.sh b/testsuite/tests-to-run/parallel-local-1s.sh index f470a0c1..29891105 100644 --- a/testsuite/tests-to-run/parallel-local-1s.sh +++ b/testsuite/tests-to-run/parallel-local-1s.sh @@ -10,9 +10,9 @@ par_plus_slot_replacement() { echo '### show {slot} {0%} {0#}' - parallel -k --plus echo '{slot}=$PARALLEL_JOBSLOT={%}' ::: A B C + parallel -k --plus 'sleep 0.{%};echo {slot}=$PARALLEL_JOBSLOT={%}' ::: A B C parallel -j15 -k --plus 'echo Seq: {0#} {#}' ::: {1..100} | sort - parallel -j15 -k --plus 'sleep 0.0{}; echo Slot: {0%} {%}' ::: {1..100} | + parallel -j15 -k --plus 'sleep 0.{}; echo Slot: {0%} {%}' ::: {1..100} | sort -u } diff --git a/testsuite/tests-to-run/parallel-local-3s.sh b/testsuite/tests-to-run/parallel-local-3s.sh index 7cda0b3b..5e4fc9aa 100644 --- a/testsuite/tests-to-run/parallel-local-3s.sh +++ b/testsuite/tests-to-run/parallel-local-3s.sh @@ -338,21 +338,21 @@ par_totaljob_repl() { parallel -k -N7 --plus echo {#} {##} ::: {1..14} parallel -k -N7 --plus echo {#} {##} ::: {1..15} parallel -k -S 8/: -X --plus echo {#} {##} ::: {1..15} - parallel -k --plus --delay 0.1 -j 10 'echo {0#}/{##}:{0%}' ::: {1..5} ::: {1..4} + parallel -k --plus --delay 0.1 -j 10 'sleep 1; echo {0#}/{##}:{0%}' ::: {1..5} ::: {1..4} } par_jobslot_repl() { 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 - parallel --halt now,fail=10% -kj2 --delay 0.1 echo {%} ::: a b ::: c d e - parallel --eta -kj2 --delay 0.1 echo {%} ::: a b ::: c d e 2>/dev/null - parallel --shuf -kj2 --delay 0.1 echo {%} ::: a b ::: c d e 2>/dev/null + parallel -kj2 --delay 0.1 --bar 'sleep 0.2;echo {%}' ::: a b ::: c d e 2>/dev/null + parallel -kj2 --delay 0.1 --eta 'sleep 0.2;echo {%}' ::: a b ::: c d e 2>/dev/null + parallel -kj2 --delay 0.1 --shuf 'sleep 0.2;echo {%}' ::: a b ::: c d e 2>/dev/null + parallel -kj2 --delay 0.1 --halt now,fail=10% 'sleep 0.2;echo {%}' ::: a b ::: c d e echo 'bug #46231: {%} with --pipepart broken. Should give 1+2' seq 10000 > /tmp/num10000 - parallel -k --pipepart -ka /tmp/num10000 --block 10k -j2 --delay 0.05 echo {%} + parallel -k --pipepart -ka /tmp/num10000 --block 10k -j2 --delay 0.05 'sleep 0.1; echo {%}' rm /tmp/num10000 } @@ -440,11 +440,11 @@ par_children_receive_sig() { par_wrong_slot_rpl_resume() { echo '### bug #47644: Wrong slot number replacement when resuming' seq 0 20 | - parallel -kj 4 --delay 0.2 --joblog /tmp/parallel-bug-47558 \ - 'sleep 1; echo {%} {=$_==10 and exit =}' + parallel -kj 4 --delay 0.2 --joblog /tmp/parallel-bug-47558 \ + 'sleep 1; echo {%} {=$_==10 and exit =}' seq 0 20 | - parallel -kj 4 --resume --delay 0.2 --joblog /tmp/parallel-bug-47558 \ - 'sleep 1; echo {%} {=$_==110 and exit =}' + parallel -kj 4 --resume --delay 0.2 --joblog /tmp/parallel-bug-47558 \ + 'sleep 1; echo {%} {=$_==110 and exit =}' } par_multiline_commands() { diff --git a/testsuite/tests-to-run/parallel-local-race02.sh b/testsuite/tests-to-run/parallel-local-race02.sh index 89553b4e..04746bca 100644 --- a/testsuite/tests-to-run/parallel-local-race02.sh +++ b/testsuite/tests-to-run/parallel-local-race02.sh @@ -6,7 +6,7 @@ # These fail regularly -#par_ctrlz_should_suspend_children() { +ctrlz_should_suspend_children() { echo 'bug #46120: Suspend should suspend (at least local) children' echo 'it should burn 1.9 CPU seconds, but no more than that' echo 'The 5 second sleep will make it be killed by timeout when it fgs' @@ -31,7 +31,14 @@ sleep 5; fg; echo 1=OK $?' | grep -v '\[1\]' | grep -v 'SHA256' -#} +} +ctrlz_should_suspend_children + +par_more_than_9_relative_sshlogin() { + echo '### Check more than 9(relative) simultaneous sshlogins' + seq 1 11 | stdout parallel -k -j10000% -S "ssh lo" echo | + grep -v 'parallel: Warning:' +} par_sql_CSV() { echo '### CSV write to the right place' diff --git a/testsuite/tests-to-run/parallel-virtualbox1.sh b/testsuite/tests-to-run/parallel-virtualbox1.sh index 4f1fddfb..fde3df3d 100644 --- a/testsuite/tests-to-run/parallel-virtualbox1.sh +++ b/testsuite/tests-to-run/parallel-virtualbox1.sh @@ -54,5 +54,7 @@ compgen -A function | grep par_ | LC_ALL=C sort | grep -v 'If you believe this message is in error, please check the process' | grep -v 'listing for any "ruby" or "vagrant" processes and kill them. Then' | grep -v 'try again.' | + grep -v 'A new version of Vagrant is available:' | + grep -v 'To upgrade visit: ' | grep . ) diff --git a/testsuite/tests-to-run/test18.sh b/testsuite/tests-to-run/test18.sh index 42d8c48e..c1bdc8e7 100644 --- a/testsuite/tests-to-run/test18.sh +++ b/testsuite/tests-to-run/test18.sh @@ -54,10 +54,7 @@ echo '### Check forced number of CPUs being respected' seq 1 20 | stdout parallel -k -j+0 -S 1/:,7/$SSHLOGIN1 "hostname; echo {} >/dev/null" | sort echo '### Check more than 9 simultaneous sshlogins' -seq 1 11 | parallel -k -j0 -S "ssh $SSHLOGIN1" echo - -echo '### Check more than 9(relative) simultaneous sshlogins' -seq 1 11 | parallel -k -j10000% -S "ssh $SSHLOGIN1" echo +seq 1 11 | parallel -k -j0 -S "ssh lo" echo echo '### Check -S syntax' seq 1 11 | parallel -k -j100% -S : echo diff --git a/testsuite/wanted-results/parallel-local-0.3s b/testsuite/wanted-results/parallel-local-0.3s index d8ea49bf..c3f2a238 100644 --- a/testsuite/wanted-results/parallel-local-0.3s +++ b/testsuite/wanted-results/parallel-local-0.3s @@ -492,6 +492,17 @@ par_long_cmd_mem_use perl -e '$r=rand(shift); for($f = 0; $f < $r; $f++){ $a = " par_long_cmd_mem_use perl -e '$r=rand(shift); for($f = 0; $f < $r; $f++){ $a = "a"x100 } print shift,"\n"' 10000 97 par_long_cmd_mem_use perl -e '$r=rand(shift); for($f = 0; $f < $r; $f++){ $a = "a"x100 } print shift,"\n"' 10000 98 par_long_cmd_mem_use perl -e '$r=rand(shift); for($f = 0; $f < $r; $f++){ $a = "a"x100 } print shift,"\n"' 10000 99 +par_long_input ### Long input lines should not fail if they are not used +par_long_input a +par_long_input c +par_long_input b +par_long_input A +par_long_input C +par_long_input B +par_long_input parallel: Error: Command line too long (200014 >= 131063) at input 0: a XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX... +par_long_input parallel: Error: Command line too long (1000009 >= 131063) at input 0: a XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX... +par_long_input parallel: Error: Command line too long (1000009 >= 131063) at input 0: a XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX... +par_long_input parallel: Error: Command line too long (2000014 >= 131063) at input 0: a XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX... par_maxchar_s ### Test --max-chars and -s: Max number of chars in a line par_maxchar_s line 1 line 1 par_maxchar_s line 2 diff --git a/testsuite/wanted-results/parallel-local-10s b/testsuite/wanted-results/parallel-local-10s index ed068510..45921cf4 100644 --- a/testsuite/wanted-results/parallel-local-10s +++ b/testsuite/wanted-results/parallel-local-10s @@ -698,38 +698,38 @@ par_perlexpr_repl {=a par_perlexpr_repl {= a par_perlexpr_repl {= a =} par_perlexpr_repl ### bug #45842: Do not evaluate {= =} twice -par_perlexpr_repl 5 -par_perlexpr_repl 6 -par_perlexpr_repl 7 -par_perlexpr_repl 8 -par_perlexpr_repl 5 -par_perlexpr_repl 6 -par_perlexpr_repl 7 -par_perlexpr_repl 8 +par_perlexpr_repl 1 +par_perlexpr_repl 2 +par_perlexpr_repl 3 +par_perlexpr_repl 4 +par_perlexpr_repl 1 +par_perlexpr_repl 2 +par_perlexpr_repl 3 +par_perlexpr_repl 4 +par_perlexpr_repl 1 2 +par_perlexpr_repl 3 4 +par_perlexpr_repl 5 6 +par_perlexpr_repl 7 8 +par_perlexpr_repl 9 10 +par_perlexpr_repl 11 12 +par_perlexpr_repl 13 14 +par_perlexpr_repl 15 16 par_perlexpr_repl 17 18 par_perlexpr_repl 19 20 par_perlexpr_repl 21 22 par_perlexpr_repl 23 24 -par_perlexpr_repl 25 26 -par_perlexpr_repl 27 28 -par_perlexpr_repl 29 30 -par_perlexpr_repl 31 32 -par_perlexpr_repl 33 34 -par_perlexpr_repl 35 36 -par_perlexpr_repl 37 38 -par_perlexpr_repl 39 40 +par_perlexpr_repl 1 +par_perlexpr_repl 2 +par_perlexpr_repl 3 +par_perlexpr_repl 4 +par_perlexpr_repl 5 +par_perlexpr_repl 6 +par_perlexpr_repl 7 +par_perlexpr_repl 8 par_perlexpr_repl 9 par_perlexpr_repl 10 par_perlexpr_repl 11 par_perlexpr_repl 12 -par_perlexpr_repl 13 -par_perlexpr_repl 14 -par_perlexpr_repl 15 -par_perlexpr_repl 16 -par_perlexpr_repl 17 -par_perlexpr_repl 18 -par_perlexpr_repl 19 -par_perlexpr_repl 20 par_perlexpr_repl ### bug #45939: {2} in {= =} fails par_perlexpr_repl OK par_perlexpr_repl OK-OK diff --git a/testsuite/wanted-results/parallel-local-3s b/testsuite/wanted-results/parallel-local-3s index 93c802f8..91698c2b 100644 --- a/testsuite/wanted-results/parallel-local-3s +++ b/testsuite/wanted-results/parallel-local-3s @@ -119,7 +119,7 @@ par_eta 16 par_eta ### Test of --eta with no jobs par_eta par_eta Computers / CPU cores / Max jobs to run -par_eta 1:local / 8 / 1 +par_eta 1:local / 8 / 8 par_eta par_eta ETA: 0s Left: 0 AVG: 0.00s 0 par_exitval_signal ### Test --joblog with exitval and Test --joblog with signal -- timing dependent par_exitval_signal exitval=128+6 OK @@ -486,7 +486,7 @@ par_progress 16 par_progress ### Test of --progress with no jobs par_progress par_progress Computers / CPU cores / Max jobs to run -par_progress 1:local / 8 / 1 +par_progress 1:local / 8 / 8 par_progress par_progress 0 par_replacement_slashslash ### Test {//} par_replacement_slashslash . a @@ -674,10 +674,10 @@ par_totaljob_repl 10 par_totaljob_repl 10 par_totaljob_repl 10 par_totaljob_repl 10 -par_totaljob_repl 10 -par_totaljob_repl 10 -par_totaljob_repl 10 -par_totaljob_repl 10 +par_totaljob_repl 1 +par_totaljob_repl 2 +par_totaljob_repl 3 +par_totaljob_repl 4 par_totaljob_repl 10 par_totaljob_repl 10 par_totaljob_repl 10 @@ -725,17 +725,17 @@ par_wrong_slot_rpl_resume 4 3 par_wrong_slot_rpl_resume 1 4 par_wrong_slot_rpl_resume 2 5 par_wrong_slot_rpl_resume 3 6 -par_wrong_slot_rpl_resume 4 7 -par_wrong_slot_rpl_resume 1 8 -par_wrong_slot_rpl_resume 2 9 -par_wrong_slot_rpl_resume 3 10 -par_wrong_slot_rpl_resume 4 11 -par_wrong_slot_rpl_resume 1 12 -par_wrong_slot_rpl_resume 2 13 -par_wrong_slot_rpl_resume 3 14 -par_wrong_slot_rpl_resume 4 15 -par_wrong_slot_rpl_resume 1 16 -par_wrong_slot_rpl_resume 2 17 -par_wrong_slot_rpl_resume 3 18 -par_wrong_slot_rpl_resume 4 19 -par_wrong_slot_rpl_resume 1 20 +par_wrong_slot_rpl_resume 1 7 +par_wrong_slot_rpl_resume 2 8 +par_wrong_slot_rpl_resume 3 9 +par_wrong_slot_rpl_resume 4 10 +par_wrong_slot_rpl_resume 1 11 +par_wrong_slot_rpl_resume 2 12 +par_wrong_slot_rpl_resume 3 13 +par_wrong_slot_rpl_resume 4 14 +par_wrong_slot_rpl_resume 1 15 +par_wrong_slot_rpl_resume 2 16 +par_wrong_slot_rpl_resume 3 17 +par_wrong_slot_rpl_resume 4 18 +par_wrong_slot_rpl_resume 1 19 +par_wrong_slot_rpl_resume 2 20 diff --git a/testsuite/wanted-results/parallel-local-race02 b/testsuite/wanted-results/parallel-local-race02 index d21ebff9..dc3c8b04 100644 --- a/testsuite/wanted-results/parallel-local-race02 +++ b/testsuite/wanted-results/parallel-local-race02 @@ -15,10 +15,10 @@ par_PARALLEL_RSYNC_OPTS ### test rsync opts par_PARALLEL_RSYNC_OPTS rsync --protocol 30 -rlDzRRRRrsync --protocol 30 --rsync-path='cd ././.; rsync' -rlDzRRRRrsync --protocol 30 -zzrrllddRRRRrsync --protocol 30 --rsync-path='cd ././.; rsync' -zzrrllddRRRR par_continuous_output Test delayed output with '' par_continuous_output -u is optimal but hard to reach, due to non-mixing -par_continuous_output 6 -par_continuous_output 0 -par_continuous_output 0 -par_continuous_output 0 +par_continuous_output 1 +par_continuous_output 1 +par_continuous_output 1 +par_continuous_output 1 par_continuous_output 1 par_continuous_output 1 par_continuous_output 1 @@ -27,9 +27,6 @@ par_continuous_output 1 par_continuous_output 0 par_continuous_output Test delayed output with '-u' par_continuous_output -u is optimal but hard to reach, due to non-mixing -par_continuous_output 5 -par_continuous_output 0 -par_continuous_output 0 par_continuous_output 0 par_continuous_output 1 par_continuous_output 1 @@ -37,6 +34,9 @@ par_continuous_output 1 par_continuous_output 1 par_continuous_output 1 par_continuous_output 1 +par_continuous_output 1 +par_continuous_output 1 +par_continuous_output 1 par_hostgroup ### --hostgroup force ncpu par_hostgroup parallel par_hostgroup parallel @@ -114,6 +114,18 @@ par_kill_hup parallel: Waiting for these 2 jobs to finish. Send SIGTERM to stop par_kill_hup parallel: bash -c 'sleep 3 & pid=$!; wait $pid' par_kill_hup parallel: bash -c 'sleep 3 & pid=$!; wait $pid' par_kill_hup bash---pstree +par_more_than_9_relative_sshlogin ### Check more than 9(relative) simultaneous sshlogins +par_more_than_9_relative_sshlogin 1 +par_more_than_9_relative_sshlogin 2 +par_more_than_9_relative_sshlogin 3 +par_more_than_9_relative_sshlogin 4 +par_more_than_9_relative_sshlogin 5 +par_more_than_9_relative_sshlogin 6 +par_more_than_9_relative_sshlogin 7 +par_more_than_9_relative_sshlogin 8 +par_more_than_9_relative_sshlogin 9 +par_more_than_9_relative_sshlogin 10 +par_more_than_9_relative_sshlogin 11 par_resume_failed_k ### bug #38299: --resume-failed -k par_resume_failed_k job1 val 0 par_resume_failed_k job2 val 1 diff --git a/testsuite/wanted-results/parallel-local-ssh3 b/testsuite/wanted-results/parallel-local-ssh3 index e99cfcf5..50c10a60 100644 --- a/testsuite/wanted-results/parallel-local-ssh3 +++ b/testsuite/wanted-results/parallel-local-ssh3 @@ -11,7 +11,7 @@ par_nonall_should_not_block ### bug #47608: parallel --nonall -S lo 'echo ::: ' par_nonall_should_not_block ::: par_progress_text_max_jobs_to_run ### bug #49404: "Max jobs to run" does not equal the number of jobs specified when using GNU Parallel on remote server? par_progress_text_max_jobs_to_run should give 10 running jobs -par_progress_text_max_jobs_to_run 1:lo / 16 / 10 +par_progress_text_max_jobs_to_run 1:lo / 16 / 16 par_quoting_for_onall ### bug #35427: quoting of {2} broken for --onall par_quoting_for_onall /bin/ls par_remote_function_nice ### functions and --nice diff --git a/testsuite/wanted-results/parallel-local13 b/testsuite/wanted-results/parallel-local13 index 981a403f..db90b1c8 100644 --- a/testsuite/wanted-results/parallel-local13 +++ b/testsuite/wanted-results/parallel-local13 @@ -998,7 +998,7 @@ echo '### -s6 echo < files.xi' stdout xargs -s6 echo < files.xi xargs: argument line too long stdout parallel -k -X -s6 echo < files.xi -parallel: Error: Command line too long (27 >= 6) at input -7: /src/gnu/autoconf-1.11 +parallel: Error: Command line too long (27 >= 6) at input 0: /src/gnu/autoconf-1.11 echo '### -iARG -s86 echo ARG is xARGx < files.xi' ### -iARG -s86 echo ARG is xARGx < files.xi stdout xargs -iARG -s86 echo ARG is xARGx < files.xi diff --git a/testsuite/wanted-results/parallel-local15 b/testsuite/wanted-results/parallel-local15 index 423f19a8..7098a476 100644 --- a/testsuite/wanted-results/parallel-local15 +++ b/testsuite/wanted-results/parallel-local15 @@ -171,6 +171,11 @@ ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_= 4 ab 4 b 6 a +parallel: Warning: Only enough file handles to run 252 jobs in parallel. +parallel: Warning: Try running 'parallel -j0 -N 252 --pipe parallel -j0' +parallel: Warning: or increasing 'ulimit -n' (try: ulimit -n `ulimit -Hn`) +parallel: Warning: or increasing 'nofile' in /etc/security/limits.conf +parallel: Warning: or increasing /proc/sys/fs/file-max ls | parallel --group -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=pQ($_)=}"\n\"}"' | LC_ALL=C sort 1 1-col.txt 1 1-col.txt.diff @@ -280,6 +285,11 @@ ls | parallel --group -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\ 4 ab 4 b 6 a +parallel: Warning: Only enough file handles to run 252 jobs in parallel. +parallel: Warning: Try running 'parallel -j0 -N 252 --pipe parallel -j0' +parallel: Warning: or increasing 'ulimit -n' (try: ulimit -n `ulimit -Hn`) +parallel: Warning: or increasing 'nofile' in /etc/security/limits.conf +parallel: Warning: or increasing /proc/sys/fs/file-max find . -type f | parallel --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | LC_ALL=C sort ./ ab /c' d/ ef"g.diff ./ ab /c' d/ ef"g.diff diff --git a/testsuite/wanted-results/parallel-tutorial b/testsuite/wanted-results/parallel-tutorial index 31fcb3b9..1ddb45b1 100644 --- a/testsuite/wanted-results/parallel-tutorial +++ b/testsuite/wanted-results/parallel-tutorial @@ -499,6 +499,11 @@ echo C sleep 1 echo 0 > my_jobs wait +parallel: Warning: Only enough file handles to run 248 jobs in parallel. +parallel: Warning: Try running 'parallel -j0 -N 248 --pipe parallel -j0' +parallel: Warning: or increasing 'ulimit -n' (try: ulimit -n `ulimit -Hn`) +parallel: Warning: or increasing 'nofile' in /etc/security/limits.conf +parallel: Warning: or increasing /proc/sys/fs/file-max 9 parallel --use-cpus-instead-of-cores -N0 sleep 1 :::: num8 parallel --shuf echo ::: 1 2 3 ::: a b c ::: A B C diff --git a/testsuite/wanted-results/test18 b/testsuite/wanted-results/test18 index 3c8168c4..5ae601dd 100644 --- a/testsuite/wanted-results/test18 +++ b/testsuite/wanted-results/test18 @@ -110,18 +110,6 @@ centos8.localdomain 9 10 11 -### Check more than 9(relative) simultaneous sshlogins -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 ### Check -S syntax 1 2