From 75007fcbbf30d8306c228f44acd02fda8ecb5c2f Mon Sep 17 00:00:00 2001 From: Ole Tange Date: Sun, 22 Jul 2018 08:58:32 +0200 Subject: [PATCH] parallel: \-quoting replaced with '-quoting. --- Makefile.am | 3 + Makefile.in | 3 + README | 12 +- configure.ac | 2 +- doc/release_new_version | 18 +- src/env_parallel.mksh | 4 +- src/env_parallel.zsh | 4 +- src/niceload | 2 +- src/parallel | 408 ++-- src/parallel_design.pod | 15 +- src/sql | 2 +- testsuite/Makefile | 6 + testsuite/tests-to-run/parallel-local-0.3s.sh | 1 + testsuite/tests-to-run/parallel-local-100s.sh | 2 +- testsuite/tests-to-run/parallel-local-10s.sh | 25 + .../tests-to-run/parallel-local-sql01.sh | 215 +-- testsuite/tests-to-run/parallel-local-ssh1.sh | 5 +- testsuite/tests-to-run/parallel-local-ssh7.sh | 3 + testsuite/tests-to-run/parallel-local12.sh | 1 + testsuite/tests-to-run/parallel-local15.sh | 4 +- testsuite/tests-to-run/parallel-local18.sh | 1 + testsuite/tests-to-run/parallel-local7.sh | 48 +- testsuite/tests-to-run/parallel-local9.sh | 12 - testsuite/wanted-results/parallel-local-0.3s | 212 +-- testsuite/wanted-results/parallel-local-10s | 12 + testsuite/wanted-results/parallel-local-1s | 88 +- testsuite/wanted-results/parallel-local-30s | 64 +- testsuite/wanted-results/parallel-local-3s | 2 +- .../wanted-results/parallel-local-race01 | 18 +- testsuite/wanted-results/parallel-local-sql | 60 +- testsuite/wanted-results/parallel-local-sql01 | 1663 ++++++++++++++++- testsuite/wanted-results/parallel-local-ssh1 | 28 +- testsuite/wanted-results/parallel-local-ssh2 | 6 +- testsuite/wanted-results/parallel-local-ssh7 | 53 +- testsuite/wanted-results/parallel-local-ssh8 | 2 +- testsuite/wanted-results/parallel-local1 | 4 +- testsuite/wanted-results/parallel-local104 | Bin 370 -> 370 bytes testsuite/wanted-results/parallel-local105 | 6 +- testsuite/wanted-results/parallel-local114 | Bin 3504 -> 3503 bytes testsuite/wanted-results/parallel-local13 | 10 +- testsuite/wanted-results/parallel-local15 | 268 +-- testsuite/wanted-results/parallel-local150 | 6 +- testsuite/wanted-results/parallel-local164 | 2 +- testsuite/wanted-results/parallel-local18 | 4 +- testsuite/wanted-results/parallel-local19 | 10 +- testsuite/wanted-results/parallel-local22 | 2 +- testsuite/wanted-results/parallel-local7 | 95 +- testsuite/wanted-results/parallel-local9 | 29 +- 48 files changed, 2558 insertions(+), 882 deletions(-) diff --git a/Makefile.am b/Makefile.am index 74511406..4031181c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -119,4 +119,7 @@ monitorman: # If man page changed: open new pdfman inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f . | parallel -uj1 'echo {=/\.pod$$/ or skip()=};make -j && sudo make install; pdfman {/.} &' +testurls: + grep -h -Po 'https?://[^ $$<>")}]+' src/* | perl -pe 's/(>|\{).*//;s/\\//g;s/&/&/g;s/&#.*//;'"s/'.*//" | sort -u | parallel -j0 --tag 'wget -qm -l1 -Q1 {}; echo $$?' + EXTRA_DIST = CITATION CREDITS cc-by-sa.txt fdl.txt diff --git a/Makefile.in b/Makefile.in index 33af24d9..b4550c4f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -867,6 +867,9 @@ monitorman: # If man page changed: open new pdfman inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f . | parallel -uj1 'echo {=/\.pod$$/ or skip()=};make -j && sudo make install; pdfman {/.} &' +testurls: + grep -h -Po 'https?://[^ $$<>")}]+' src/* | perl -pe 's/(>|\{).*//;s/\\//g;s/&/&/g;s/&#.*//;'"s/'.*//" | sort -u | parallel -j0 --tag 'wget -qm -l1 -Q1 {}; echo $$?' + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/README b/README index 0d97fb52..c3b68279 100644 --- a/README +++ b/README @@ -44,9 +44,9 @@ document. Full installation of GNU Parallel is as simple as: - wget https://ftpmirror.gnu.org/parallel/parallel-20180622.tar.bz2 - bzip2 -dc parallel-20180622.tar.bz2 | tar xvf - - cd parallel-20180622 + wget https://ftpmirror.gnu.org/parallel/parallel-20180722.tar.bz2 + bzip2 -dc parallel-20180722.tar.bz2 | tar xvf - + cd parallel-20180722 ./configure && make && sudo make install @@ -55,9 +55,9 @@ Full installation of GNU Parallel is as simple as: If you are not root you can add ~/bin to your path and install in ~/bin and ~/share: - wget https://ftpmirror.gnu.org/parallel/parallel-20180622.tar.bz2 - bzip2 -dc parallel-20180622.tar.bz2 | tar xvf - - cd parallel-20180622 + wget https://ftpmirror.gnu.org/parallel/parallel-20180722.tar.bz2 + bzip2 -dc parallel-20180722.tar.bz2 | tar xvf - + cd parallel-20180722 ./configure --prefix=$HOME && make && make install Or if your system lacks 'make' you can simply copy src/parallel diff --git a/configure.ac b/configure.ac index 2c325eec..8672d83d 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([parallel], [20180622], [bug-parallel@gnu.org]) +AC_INIT([parallel], [20180722], [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 b102d7f2..155039e0 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -141,6 +141,7 @@ git push git push origin $TAG git push origin $YYYYMMDD + == Update documentation == Update version number + 1 @@ -154,6 +155,12 @@ Unmodified beta since last version => production Unmodified alpha since last version => beta Modified => alpha + +== Check URLs == + +make testurls + + == Update Savannah == file:///home/tange/privat/parallel/doc/release_new_version @@ -199,10 +206,11 @@ to:parallel@gnu.org, bug-parallel@gnu.org stable-bcc: Jesse Alama -Subject: GNU Parallel 20180722 ('?') released <<[stable]>> +Subject: GNU Parallel 20180722 ('Crimson Hexagon') released [alpha] <<[stable]>> -GNU Parallel 20180722 ('') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/ +GNU Parallel 20180722 ('Crimson Hexagon') [alpha] <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/ +This release has signficant changes and is considered alpha quality. <> Quote of the month: @@ -214,6 +222,8 @@ Quote of the month: New in this release: +* The quoting engine has been changed. Instead of using \-quoting GNU Parallel now uses '-quoting in bash/ash/dash/ksh. This should improve compatibility with different locales. This is a big change causing this release to be alpha quality. + * The CPU calculation has changed. By default GNU Parallel uses the number of CPU threads as the number of CPUs. This can be change to the number of CPU cores or number of CPU sockets with --use-cores-instead-of-threads or --use-sockets-instead-of-threads. * The detected number of sockets, cores, and threads can be shown with --number-of-sockets, --number-of-cores, and --number-of-threads. @@ -222,7 +232,9 @@ New in this release: * GNU Parallel is distributed as part of Snippy https://github.com/tseemann/snippy -https://esgeeks.com/gnu-parallel-ejecutar-comandos-simultaneo-linux/ +* GNU Parallel: Ejecutar comandos simultáneamente en Linux https://esgeeks.com/gnu-parallel-ejecutar-comandos-simultaneo-linux/ + +* Parallel download genomic data with GNU-Parallel https://digibio.blogspot.com/search/label/GNU-Parallel <> diff --git a/src/env_parallel.mksh b/src/env_parallel.mksh index 4876d1b0..92e48986 100644 --- a/src/env_parallel.mksh +++ b/src/env_parallel.mksh @@ -349,8 +349,8 @@ _parset_main() { else # $_parset_name does not contain , or space # => $_parset_name is the name of the array to put data into - # Supported in: bash zsh ksh - # Arrays do not work in: ash dash + # Supported in: bash zsh ksh mksh + # Arrays do not work in: sh ash dash eval "$_parset_name=( $( $_parset_parallel_prg --files -k "$@" | perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "' ) )" fi diff --git a/src/env_parallel.zsh b/src/env_parallel.zsh index 495009b7..324076e0 100755 --- a/src/env_parallel.zsh +++ b/src/env_parallel.zsh @@ -340,8 +340,8 @@ _parset_main() { else # $_parset_name does not contain , or space # => $_parset_name is the name of the array to put data into - # Supported in: bash zsh ksh - # Arrays do not work in: ash dash + # Supported in: bash zsh ksh mksh + # Arrays do not work in: sh ash dash eval "$_parset_name=( $( $_parset_parallel_prg --files -k "$@" | perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "' ) )" fi diff --git a/src/niceload b/src/niceload index 516008ff..b17ceefc 100755 --- a/src/niceload +++ b/src/niceload @@ -24,7 +24,7 @@ use strict; use Getopt::Long; $Global::progname="niceload"; -$Global::version = 20180622; +$Global::version = 20180722; 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 be7053bf..fd61160f 100755 --- a/src/parallel +++ b/src/parallel @@ -262,7 +262,7 @@ sub pipepart_setup { @Global::cat_prepends = map { pipe_part_files($_) } @opt::a; # Unget the empty arg as many times as there are parts $Global::JobQueue->{'commandlinequeue'}{'arg_queue'}->unget( - map { [Arg->new("\0")] } @Global::cat_prepends + map { [Arg->new("\0noarg")] } @Global::cat_prepends ); } } @@ -1317,10 +1317,10 @@ sub parse_options { # Append a dummy empty argument if there are no arguments # on the command line to avoid reading from STDIN. # arg_sep = random 50 char - # \0 => nothing (not the empty string) + # \0noarg => nothing (not the empty string) $Global::arg_sep = join "", map { (0..9,"a".."z","A".."Z")[rand(62)] } (1..50); - push @ARGV, $Global::arg_sep, "\0"; + push @ARGV, $Global::arg_sep, "\0noarg"; } if(defined $opt::tee) { if(not defined $opt::jobs) { @@ -1462,6 +1462,9 @@ sub parse_options { } # Map \001 to \n to make it easer to quote \n in $PARALLEL_ENV $penv =~ s/\001/\n/g; + if($penv =~ /\0/) { + ::warning('\0 (NUL) in environment is not supported'); + } $Global::parallel_env = $penv; } @@ -1538,7 +1541,7 @@ sub check_invalid_option_combinations { sub init_globals { # Defaults: - $Global::version = 20180622; + $Global::version = 20180722; $Global::progname = 'parallel'; $Global::infinity = 2**31; $Global::debug = 0; @@ -1609,8 +1612,6 @@ sub init_globals { $Global::trim = 'n'; $Global::max_jobs_running = 0; $Global::job_already_run = ''; - # LC_ALL workaround for multibyte chars containing special shell chars - $ENV{'LC_ALL'} = 'C'; $ENV{'TMPDIR'} ||= "/tmp"; if(not $ENV{HOME}) { # $ENV{HOME} is sometimes not set if called from PHP @@ -1789,7 +1790,7 @@ sub parse_semaphore { @opt::a = ("/dev/null"); # Append a dummy empty argument # \0 => nothing (not the empty string) - push(@Global::unget_argv, [Arg->new("\0")]); + push(@Global::unget_argv, [Arg->new("\0noarg")]); $Semaphore::timeout = $opt::semaphoretimeout || 0; if(defined $opt::semaphorename) { $Semaphore::name = $opt::semaphorename; @@ -2266,8 +2267,8 @@ sub shell_quote { # Output: # @shell_quoted_strings = string quoted with \ as needed by the shell return wantarray ? - (map { shell_quote_scalar($_) } @_) - : (join" ",map { shell_quote_scalar($_) } @_); + (map { Q($_) } @_) + : (join" ",map { Q($_) } @_); } sub shell_quote_scalar_rc { @@ -2310,26 +2311,19 @@ sub shell_quote_scalar_csh { } sub shell_quote_scalar_default { - # Quote for other shells - my $a = $_[0]; - if(defined $a) { - # zsh wants '=' quoted - # Solaris sh wants ^ quoted. - # $a =~ s/([\002-\011\013-\032\\\#\?\`\(\)\{\}\[\]\^\*\>\<\~\|\; \"\!\$\&\'\202-\377])/\\$1/g; - # This is 1% faster than the above - if(($a =~ s/[\002-\011\013-\032\\\#\?\`\(\)\{\}\[\]\^\*\<\=\>\~\|\; \"\!\$\&\'\202-\377]/\\$&/go) - + - # quote newline as '\n' - ($a =~ s/[\n]/'\n'/go)) { - # A string was replaced - # No need to test for "" or \0 - } elsif($a eq "") { - $a = "''"; - } elsif($a eq "\0") { - $a = ""; - } + # Quote for other shells (Bourne compatibles) + my ($par) = $_[0]; + if($par =~ /[^-_.+a-z0-9\/]/i) { + $par =~ s/'/'"'"'/g; # "-quote single quotes + $par = "'$par'"; # '-quote entire string + $par =~ s/^''|''$//g; # Remove unneeded '' at ends + return $par; + } elsif ($par eq "") { + return "''"; + } else { + # No quoting needed + return $par; } - return $a; } sub shell_quote_scalar { @@ -2356,6 +2350,12 @@ sub shell_quote_scalar { return shell_quote_scalar(@_); } +sub Q { + # Q alias for ::shell_quote_scalar + *Q = \&::shell_quote_scalar; + return Q(@_); +} + sub shell_quote_file { # Quote the string so shell will not expand any special chars # and prepend ./ if needed @@ -2363,7 +2363,7 @@ sub shell_quote_file { # $filename = filename to be shell quoted # Returns: # $quoted_filename = filename quoted with \ and ./ if needed - my $a = shell_quote_scalar(shift); + my $a = shift; if(defined $a) { if($a =~ m:^/: or $a =~ m:^\./:) { # /abs/path or ./rel/path => skip @@ -2372,7 +2372,7 @@ sub shell_quote_file { $a = "./".$a; } } - return $a; + return ::Q($a); } sub shell_words { @@ -2397,6 +2397,12 @@ sub perl_quote_scalar { return $a; } +sub pQ { + # pQ alias for ::perl_quote_scalar + *pQ = \&::perl_quote_scalar; + return pQ(@_); +} + sub unquote_printf { # Convert \t \n \r \000 \0 $_ = shift; @@ -2910,7 +2916,7 @@ sub drain_job_queue { # Replace --sql/--sqlandworker with --sqlworker my @ARGV = map { s/^--sql(andworker)?$/--sqlworker/; $_ } @Global::options_in_argv; # exec the --sqlworker - exec($0,::shell_quote(@ARGV),@command); + exec($0,@ARGV,@command); } } } @@ -3629,7 +3635,7 @@ sub parse_host_filtering { my (%nsockets, %ncores, %nthreads, %time_to_login, %maxlen, %echo, @down_hosts); for (@_) { - ::debug("init",$_); + ::debug("init","Read: ",$_); chomp; my @col = split /\t/, $_; if($col[0] =~ /^parallel: Warning:/) { @@ -3645,7 +3651,7 @@ sub parse_host_filtering { next; } # Get server from: eval true server\; - $col[8] =~ /eval true..([^;]+).;/ or + $col[8] =~ /eval .?true.?\s([^\;]+);/ or ::die_bug("col8 does not contain host: $col[8]"); my $host = $1; $host =~ tr/\\//d; @@ -3776,12 +3782,13 @@ sub parallelized_host_filtering { } close $in; for(<$host_fh>) { - if(/\'$/) { - # if last char = ' then append next line - # This may be due to quoting of \n in environment var - $prepend .= $_; - next; - } + # TODO incompatible with '-quoting. Needs to be fixed differently + #if(/\'$/) { + # # if last char = ' then append next line + # # This may be due to quoting of \n in environment var + # $prepend .= $_; + # next; + #} $_ = $prepend . $_; $prepend = ""; push @out, $_; @@ -8276,7 +8283,7 @@ sub sshlogin_wrap { $wd =~ s:^([^/]):$ENV{'HOME'}/$1:; } ::mkdir_or_die($wd); - $command = "cd ".::shell_quote_scalar($wd)." || exit 255; ".$command; + $command = "cd ".::Q($wd)." || exit 255; ".$command; } if(@opt::env) { # Prepend with environment setter, which sets functions in zsh @@ -8302,7 +8309,7 @@ sub sshlogin_wrap { my $pwd = ""; if($opt::workdir) { # Create remote workdir if needed. Then cd to it. - my $wd = $self->workdir(); + my $wd = ::pQ($self->workdir()); $pwd = qq{system("mkdir","-p","--","$wd"); chdir "$wd" ||}. qq{print(STDERR "parallel: Cannot chdir to $wd\\n") && exit 255;}; } @@ -8560,7 +8567,7 @@ sub workdir { } else { $workdir = "."; } - $self->{'workdir'} = ::shell_quote_scalar($workdir); + $self->{'workdir'} = $workdir; } return $self->{'workdir'}; } @@ -9974,163 +9981,190 @@ sub replaced { return $self->{'replaced'}; } -{ - my @target; - my $context_replace; - my $perl_expressions_as_re; - my @arg; - my %words_with_rpl_strings; +sub replace_placeholders { + # Replace foo{}bar with fooargbar + # Uses: + # @Arg::arg = arguments as strings to be use in {= =} + # Input: + # $targetref = command as shell words + # $quote = should everything be quoted? + # $quote_arg = should replaced arguments be quoted? + # Returns: + # @target with placeholders replaced + my $self = shift; + my $targetref = shift; + my $quote = shift; + my $quote_arg = shift; + my %replace; - sub fish_out_words_with_rpl_strings { - if(not $words_with_rpl_strings{$context_replace,@target}) { - my %word; - for (@target) { - my $tt = $_; - ::debug("replace", "Target: $tt"); - # Command line template: - # a{1}b{}c{}d - # becomes: - # a{=1 $_=$_ =}b{= $_=$_ =}c{= $_=$_ =}d - # becomes: - # a\257<1 $_=$_ \257>b\257< $_=$_ \257>c\257< $_=$_ \257>d - # Input A B C (no context) becomes: - # A B C => aAbA B CcA B Cd - # Input A B C (context -X) becomes: - # A B C => aAbAcAd aAbBcBd aAbCcCd - if($context_replace) { - while($tt =~ s/([^\s\257]* # before {= - (?: - \257< # {= - (?: [^\257]*|[\257][^<>] )* # The perl expression - \257> # =} - [^\s\257]* # after =} - )+)/ /xs) { - # $1 = pre \257< perlexpr \257> post - $word{"$1"} ||= 1; - } - } else { - while($tt =~ s/( \257<(?: # {= - [^\257]*|[\257][^<>] )* # not \257< or \257> - \257> ) # =} - //xs) { - # $1 = \257< perlexpr \257> - $word{$1} ||= 1; - } - } - } - @{$words_with_rpl_strings{$context_replace,@target}} = keys %word + # Token description: + # \0spc = unquoted space + # \0end = last token element + # \0ign = dummy token to be ignored + # \257<...\257> = replacement expression + # " " = quoted space, that splits -X group + # text = normal text - possibly part of -X group + my $spacer = 0; + my @tokens = grep { length $_ > 0 } map { + if(/^\257<|^ $/) { + # \257<...\257> or space + $_ + } else { + # Split each space into a token + split /(?= )|(?<= )/ } - return @{$words_with_rpl_strings{$context_replace,@target}}; } + # Split \257< ... \257> into own token + map { split /(?=\257<)|(?<=\257>)/ } + # Insert "\0spc" between every element + # This space should never be quoted + map { $spacer++ ? ("\0spc",$_) : $_ } + map { $_ eq "" ? "\0empty" : $_ } + @$targetref; - sub replace_placeholders { - # Replace foo{}bar with fooargbar - # Uses: - # @Arg::arg = arguments as strings to be use in {= =} - # Input: - # $targetref = command as shell words - # $quote = should everything be quoted? - # $quote_arg = should replaced arguments be quoted? - # Returns: - # @target with placeholders replaced - my $self = shift; - my $targetref = shift; - my $quote = shift; - my $quote_arg = shift; - my %replace; - # -X = context replace (fish_out_words_with_rpl_strings) - $context_replace = $self->{'context_replace'}; - @target = @$targetref; - ::debug("replace", "Replace @target\n"); - if(not @target) { - # @target is empty: Return empty array - return @target; - } - # Make it possible to use $arg[2] in {= =} - *Arg::arg = $self->{'arg_list_flat_orig'}; - # Flat list: - # $self->{'arg_list'} = [ [Arg11, Arg12], [Arg21, Arg22], [Arg31, Arg32] ] - # $self->{'arg_list_flat'} = [ Arg11, Arg12, Arg21, Arg22, Arg31, Arg32 ] - if(not @{$self->{'arg_list_flat'}}) { - @{$self->{'arg_list_flat'}} = Arg->new(""); - } - my $argref = $self->{'arg_list_flat'}; - # Number of arguments - used for positional arguments - my $n = $#$argref+1; + if(not @tokens) { + # @tokens is empty: Return empty array + return @tokens; + } + ::debug("replace", "Tokens ".join":",@tokens,"\n"); + # Make it possible to use $arg[2] in {= =} + *Arg::arg = $self->{'arg_list_flat_orig'}; + # Flat list: + # $self->{'arg_list'} = [ [Arg11, Arg12], [Arg21, Arg22], [Arg31, Arg32] ] + # $self->{'arg_list_flat'} = [ Arg11, Arg12, Arg21, Arg22, Arg31, Arg32 ] + if(not @{$self->{'arg_list_flat'}}) { + @{$self->{'arg_list_flat'}} = Arg->new(""); + } + my $argref = $self->{'arg_list_flat'}; + # Number of arguments - used for positional arguments + my $n = $#$argref+1; - # $self is actually a CommandLine-object, - # but it looks nice to be able to say {= $job->slot() =} - my $job = $self; - $perl_expressions_as_re = - join("|", map {s/^-?\d+//; "\Q$_\E"} keys %{$self->{'replacecount'}}); - # Fish out the words that have replacement strings in them - for my $word (fish_out_words_with_rpl_strings()) { - # word = AB \257< perlexpr \257> CD \257< perlexpr \257> EF - ::debug("replace", "Replacing in $word\n"); - my $normal_replace; - - # for each arg: - # replace replacement strings with replacement in the word value - # push to replace word value - for my $arg (@$argref) { - my $val = $word; - # Replace {= perl expr =} with value for each arg - $val =~ s{\257<(-?\d+)?($perl_expressions_as_re)\257>} - { - if($1) { + # $self is actually a CommandLine-object, + # but it looks nice to be able to say {= $job->slot() =} + my $job = $self; + # @replaced = tokens with \257< \257> replaced + my @replaced; + if($self->{'context_replace'}) { + my @ctxgroup; + for my $t (@tokens,"\0end") { + # \0end = last token was end of tokens. + if($t eq " " or $t eq "\0end" or $t eq "\0spc") { + # Context group complete: Replace in it + if(grep { /^\257} + { + if($1) { # Positional replace # Find the relevant arg and replace it ($argref->[$1 > 0 ? $1-1 : $n+$1] ? # If defined: replace $argref->[$1 > 0 ? $1-1 : $n+$1]-> replace($2,$quote_arg,$self) : ""); - } else { + } else { # Normal replace $normal_replace ||= 1; ($arg ? $arg->replace($2,$quote_arg,$self) : ""); - } - }gxe; - if($quote) { - CORE::push(@{$replace{::shell_quote_scalar($word)}}, - ::shell_quote_scalar($val)); + } + }sgxe; + $a + } @ctxgroup; + $normal_replace or last; + $space = "\0spc"; + } } else { - CORE::push(@{$replace{$word}}, $val); + # Context group has no a replacement string: Copy it once + CORE::push @replaced, @ctxgroup; } - # No normal replacements => only run once - $normal_replace or last; + # New context group + @ctxgroup=(); + } + if($t eq "\0spc") { + CORE::push @replaced,$t; + } else { + CORE::push @ctxgroup,$t; } } - *Arg::arg = []; - if($quote) { - @target = ::shell_quote(@target); - } - if(%replace) { - # Substitute the replace strings with the replacement values - # Must be sorted by length if a short word is a substring of a long word - my $regexp = join('|', map { my $s = $_; $s =~ s/(\W)/\\$1/g; $s } - sort { length $b <=> length $a } keys %replace); - for(@target) { - s/($regexp)/join(" ",@{$replace{$1}})/ge; - } - } - if($Global::escape_string_present) { - # Command line contains \257: Unescape it \257\256 => \257 - # If a replacement resulted in \257\256 - # it will have been escaped into \\\257\\\\256 - # and will not be matched below - for(@target) { - s/\257\256/\257/g; - } - if($opt::q) { - # \257 will be quoted too much - for(@target) { - s/\\\257\\\256/\\\257/g; + } else { + # @group = @token + # Replace in group + # Push output + # repquote = no if {} first on line, no if $quote, yes otherwise + for my $t (@tokens) { + if($t =~ /^\257} + { + if($1) { + # Positional replace + # Find the relevant arg and replace it + ($argref->[$1 > 0 ? $1-1 : $n+$1] ? # If defined: replace + $argref->[$1 > 0 ? $1-1 : $n+$1]-> + replace($2,$quote_arg,$self) + : ""); + } else { + # Normal replace + $normal_replace ||= 1; + ($arg ? $arg->replace($2,$quote_arg,$self) : ""); + } + }sgxe; + CORE::push @replaced, $space, $a; + $normal_replace or last; + $space = "\0spc"; } + } else { + # No replacement + CORE::push @replaced, $t; } } - ::debug("replace", "Return @target\n"); - return wantarray ? @target : "@target"; } + *Arg::arg = []; + ::debug("replace","Replaced: ".join":",@replaced,"\n"); + if($Global::escape_string_present) { + # Command line contains \257: Unescape it \257\256 => \257 + # If a replacement resulted in \257\256 + # it will have been escaped into \\\257\\\\256 + # and will not be matched below + for(@replaced) { + s/\257\256/\257/g; + } + } + + # Put tokens into groups that may be quoted. + my @quotegroup; + my @quoted; + for (map { $_ eq "\0empty" ? "" : $_ } + grep { $_ ne "\0ign" } + grep { $_ !~ /\0noarg/ } + @replaced, "\0end") { + if($_ eq "\0spc" or $_ eq "\0end") { + # \0spc splits quotable groups + if($quote) { + CORE::push @quoted, ::shell_quote_scalar(join"",@quotegroup); + } else { + CORE::push @quoted, join"",@quotegroup; + } + @quotegroup = (); + } else { + CORE::push @quotegroup, $_; + } + } + ::debug("replace","Quoted: ".join":",@quoted,"\n"); + return wantarray ? @quoted : "@quoted"; } sub skip { @@ -10672,17 +10706,23 @@ sub get { my $ret = $self->{'arg_sub_queue'}->get(); if($ret) { if(grep { index($_->orig(),"\0") > 0 } @$ret) { - # Allow for \0 in position 0 because GNU Parallel uses "\0" + # Allow for \0 in position 0 because GNU Parallel uses "\0noarg" # to mean no-string - ::warning("a NUL character occurred in the input.", - "It cannot be passed through in the argument list.", + ::warning("A NUL character in the input was replaced with \\0.", + "NUL cannot be passed through in the argument list.", "Did you mean to use the --null option?"); + for(grep { index($_->orig(),"\0") > 0 } @$ret) { + # Replace \0 with \\0 + my $a = $_->orig(); + $a =~ s/\0/\\0/g; + $_->set_orig($a); + } } if(defined $Global::max_number_of_args and $Global::max_number_of_args == 0) { ::debug("run", "Read 1 but return 0 args\n"); - # \0 => nothing (not the empty string) - map { $_->set_orig("\0"); } @$ret; + # \0noarg => nothing (not the empty string) + map { $_->set_orig("\0noarg"); } @$ret; } # Flush cached computed replacements in Arg-objects # To fix: parallel --bar echo {%} ::: a b c ::: d e f @@ -11471,7 +11511,7 @@ sub parse_dburl { my %options = (); # sql:mysql://[[user][:password]@][host][:port]/[database[/table][?query]] - if($url=~m!(?:sql:)? # You can prefix with 'sql:' + if($url=~m!^(?:sql:)? # You can prefix with 'sql:' ((?:oracle|ora|mysql|pg|postgres|postgresql)(?:s|ssl|)| (?:sqlite|sqlite2|sqlite3|csv)):// # Databasedriver ($1) (?: @@ -11497,7 +11537,7 @@ sub parse_dburl { \? (.*)? # Query ($8) )? - !ix) { + $!ix) { $options{databasedriver} = ::undef_if_empty(lc(uri_unescape($1))); $options{user} = ::undef_if_empty(uri_unescape($2)); $options{password} = ::undef_if_empty(uri_unescape($3)); diff --git a/src/parallel_design.pod b/src/parallel_design.pod index 3c5fd7f8..3f2e0d1a 100644 --- a/src/parallel_design.pod +++ b/src/parallel_design.pod @@ -409,7 +409,7 @@ there is no data. =item --tmux -<> +<> mkfifo /tmp/tmx3cMEV && sh -c 'tmux -S /tmp/tmsaKpv1 new-session -s p334310 -d "sleep .2" >/dev/null 2>&1'; tmux -S /tmp/tmsaKpv1 new-window -t p334310 -n wc\ 10 \(wc\ 10\)\;\ perl\ -e\ \'while\(\$t++\<3\)\{\ print\ \$ARGV\[0\],\"\\n\"\ \}\'\ \$\?h/\$status\ \>\>\ /tmp/tmx3cMEV\&echo\ wc\\\ 10\;\ echo\ \Job\ finished\ at:\ \`date\`\;sleep\ 10; @@ -792,16 +792,11 @@ you do not see the whole picture. =head2 Quoting -Quoting depends on the shell. For most shells \ is used for all -special chars and ' is used for newline. Whether a char is special -depends on the shell and the context. Luckily quoting a bit too many -chars does not break things. +Quoting depends on the shell. For most shells '-quoting is used for +strings containing special characters. -It is fast, but has the distinct disadvantage that if a string needs -to be quoted multiple times, the \'s double every time - increasing -the string length exponentially. - -For B/B newline is quoted as \ followed by newline. +For B/B newline is quoted as \ followed by newline. Other +special characters are also \-quoted. For B everything is quoted using '. diff --git a/src/sql b/src/sql index 13d99048..fa38c98a 100755 --- a/src/sql +++ b/src/sql @@ -576,7 +576,7 @@ $Global::Initfile && unlink $Global::Initfile; exit ($err); sub parse_options { - $Global::version = 20180622; + $Global::version = 20180722; $Global::progname = 'sql'; # This must be done first as this may exec myself diff --git a/testsuite/Makefile b/testsuite/Makefile index 97b868ed..e38f9c5a 100644 --- a/testsuite/Makefile +++ b/testsuite/Makefile @@ -32,6 +32,12 @@ local: testlocal testlocal: ../src/parallel tests-to-run/*local* wanted-results/*local* prereqlocal installparallel time bash Start.sh local mem +short: testlocalshort + true + +testlocalshort: ../src/parallel tests-to-run/*local* wanted-results/*local* prereqlocal installparallel + time bash Start.sh local mem'|'100s + prereqlocal: installparallel tcsh -c echo tcsh installed || (echo tcsh is required for testsuite; /bin/false) seq 1 2 >/dev/null || (echo seq is required for testsuite; /bin/false) diff --git a/testsuite/tests-to-run/parallel-local-0.3s.sh b/testsuite/tests-to-run/parallel-local-0.3s.sh index 33faf653..8e267256 100644 --- a/testsuite/tests-to-run/parallel-local-0.3s.sh +++ b/testsuite/tests-to-run/parallel-local-0.3s.sh @@ -827,6 +827,7 @@ par_pipe_recend() { par_perlexpr_with_newline() { echo 'Perl expression spanning 2 lines' + mkdir -p tmp cd tmp touch "Dad's \"famous\" 1' pizza" # Important with newline in perl expression: diff --git a/testsuite/tests-to-run/parallel-local-100s.sh b/testsuite/tests-to-run/parallel-local-100s.sh index b8f39adb..dd0bb90f 100644 --- a/testsuite/tests-to-run/parallel-local-100s.sh +++ b/testsuite/tests-to-run/parallel-local-100s.sh @@ -16,7 +16,7 @@ par_exit_code() { # Runs command in given shell via Perl's open3 shell="$1" prg="$2" - perl -MIPC::Open3 -e 'open3($a,$b,$c,"'$shell'","-c","'"$prg"'"); wait; print $?>>8,"\n"' + perl -MIPC::Open3 -e 'open3($a,$b,$c,"'$shell'","-c",'"$prg"'); wait; print $?>>8,"\n"' } export -f in_shell_run_command diff --git a/testsuite/tests-to-run/parallel-local-10s.sh b/testsuite/tests-to-run/parallel-local-10s.sh index 573348b3..b9631615 100644 --- a/testsuite/tests-to-run/parallel-local-10s.sh +++ b/testsuite/tests-to-run/parallel-local-10s.sh @@ -314,6 +314,31 @@ par_retries_all_fail() { parallel -k -j0 --retries 2 --timeout 0.1 'echo {}; sleep {}; false' 2>/dev/null } +par_sockets_cores_threads() { + echo '### Test --number-of-sockets/cores/threads' + parallel --number-of-sockets + parallel --number-of-cores + parallel --number-of-threads + parallel --number-of-cpus + + echo '### Test --use-sockets-instead-of-threads' + (seq 1 4 | + stdout parallel --use-sockets-instead-of-threads -j100% sleep) && + echo sockets done & + (seq 1 4 | stdout parallel -j100% sleep) && echo threads done & + wait + echo 'Threads should complete first on machines with less than 8 sockets' +} + +par_long_line_remote() { + echo '### Deal with long command lines on remote servers' + perl -e "print(((\"'\"x5000).\"\\n\")x6)" | + parallel -j1 -S lo -N 10000 echo {} |wc + perl -e 'print((("\$"x5000)."\n")x50)' | + parallel -j1 -S lo -N 10000 echo {} |wc +} + + export -f $(compgen -A function | grep par_) compgen -A function | grep par_ | sort | parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1' diff --git a/testsuite/tests-to-run/parallel-local-sql01.sh b/testsuite/tests-to-run/parallel-local-sql01.sh index 34f588c6..20b9804b 100644 --- a/testsuite/tests-to-run/parallel-local-sql01.sh +++ b/testsuite/tests-to-run/parallel-local-sql01.sh @@ -8,113 +8,114 @@ export PG=pg://`whoami`:`whoami`@lo/`whoami` export MYSQL=mysql://`whoami`:`whoami`@lo/`whoami` export DEBUG=false +rm /run/shm/parallel.db + +p_showsqlresult() { + SERVERURL=$1 + TABLE=$2 + sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;" +} + +p_wrapper() { + INNER=$1 + SERVERURL=$(eval echo $2) + TABLE=TBL$RANDOM + DBURL=$SERVERURL/$TABLE + T1=$(tempfile) + T2=$(tempfile) + eval "$INNER" + echo Exit=$? + wait + echo Exit=$? + $DEBUG && sort -u $T1 $T2; + rm $T1 $T2 + p_showsqlresult $SERVERURL $TABLE + $DEBUG || sql $SERVERURL "drop table $TABLE;" >/dev/null 2>/dev/null +} + +p_template() { + (sleep 4; + parallel --sqlworker $DBURL "$@" sleep .3\;echo >$T1) & + parallel --sqlandworker $DBURL "$@" sleep .3\;echo ::: {1..5} ::: {a..e} >$T2; +} + +par_sqlandworker() { + p_template +} + +par_sqlandworker_lo() { + p_template -S lo +} + +par_sqlandworker_results() { + p_template --results /tmp/out--sql +} + +par_sqlandworker_linebuffer() { + p_template --linebuffer +} + +par_sqlandworker_tag() { + p_template --tag +} + +par_sqlandworker_linebuffer_tag() { + p_template --linebuffer --tag +} + +par_sqlandworker_compress_linebuffer_tag() { + p_template --compress --linebuffer --tag +} + +par_sqlandworker_unbuffer() { + p_template -u +} + +par_sqlandworker_total_jobs() { + p_template echo {#} of '{=1 $_=total_jobs(); =};' +} + +par_append() { + parallel --sqlmaster $DBURL sleep .3\;echo ::: {1..5} ::: {a..e} >$T2; + parallel --sqlmaster +$DBURL sleep .3\;echo ::: {11..15} ::: {A..E} >>$T2; + parallel --sqlworker $DBURL sleep .3\;echo >$T1 +} + +par_shuf() { + MD5=$(echo $SERVERURL | md5sum | perl -pe 's/(...).*/$1/') + T=/tmp/parallel-bug49791-$MD5 + [ -e $T ] && rm -rf $T + export PARALLEL="--shuf --result $T" + parallel --sqlandworker $DBURL sleep .3\;echo \ + ::: {1..5} ::: {a..e} >$T2; + parallel --sqlworker $DBURL sleep .3\;echo >$T2 & + parallel --sqlworker $DBURL sleep .3\;echo >$T2 & + parallel --sqlworker $DBURL sleep .3\;echo >$T2 & + parallel --sqlworker $DBURL sleep .3\;echo >$T2 & + unset PARALLEL + wait; + # Did it compute correctly? + cat $T/1/*/*/*/stdout + # Did it shuffle + SHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;") + export PARALLEL="--result $T" + parallel --sqlandworker $DBURL sleep .3\;echo \ + ::: {1..5} ::: {a..e} >$T2; + parallel --sqlworker $DBURL sleep .3\;echo >$T2 & + parallel --sqlworker $DBURL sleep .3\;echo >$T2 & + parallel --sqlworker $DBURL sleep .3\;echo >$T2 & + parallel --sqlworker $DBURL sleep .3\;echo >$T2 & + unset PARALLEL + wait; + NOSHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;") + DIFFSIZE=$(diff <(echo "$SHUF") <(echo "$NOSHUF") | wc -c) + if [ $DIFFSIZE -gt 2500 ]; then + echo OK: Diff bigger than 2500 char + fi + [ -e $T ] && rm -rf $T + touch $T1 +} -#p_showsqlresult() { -# SERVERURL=$1 -# TABLE=$2 -# sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;" -#} -# -#p_wrapper() { -# INNER=$1 -# SERVERURL=$(eval echo $2) -# TABLE=TBL$RANDOM -# DBURL=$SERVERURL/$TABLE -# T1=$(tempfile) -# T2=$(tempfile) -# eval "$INNER" -# echo Exit=$? -# wait -# echo Exit=$? -# $DEBUG && sort -u $T1 $T2; -# rm $T1 $T2 -# p_showsqlresult $SERVERURL $TABLE -# $DEBUG || sql $SERVERURL "drop table $TABLE;" >/dev/null 2>/dev/null -#} -# -#p_template() { -# (sleep 2; -# parallel --sqlworker $DBURL "$@" sleep .3\;echo >$T1) & -# parallel --sqlandworker $DBURL "$@" sleep .3\;echo ::: {1..5} ::: {a..e} >$T2; -#} -# -#par_sqlandworker() { -# p_template -#} -# -#par_sqlandworker_lo() { -# p_template -S lo -#} -# -#par_sqlandworker_results() { -# p_template --results /tmp/out--sql -#} -# -#par_sqlandworker_linebuffer() { -# p_template --linebuffer -#} -# -#par_sqlandworker_tag() { -# p_template --tag -#} -# -#par_sqlandworker_linebuffer_tag() { -# p_template --linebuffer --tag -#} -# -#par_sqlandworker_compress_linebuffer_tag() { -# p_template --compress --linebuffer --tag -#} -# -#par_sqlandworker_unbuffer() { -# p_template -u -#} -# -#par_sqlandworker_total_jobs() { -# p_template echo {#} of '{=1 $_=total_jobs(); =};' -#} -# -#par_append() { -# parallel --sqlmaster $DBURL sleep .3\;echo ::: {1..5} ::: {a..e} >$T2; -# parallel --sqlmaster +$DBURL sleep .3\;echo ::: {11..15} ::: {A..E} >>$T2; -# parallel --sqlworker $DBURL sleep .3\;echo >$T1 -#} -# -#par_shuf() { -# MD5=$(echo $SERVERURL | md5sum | perl -pe 's/(...).*/$1/') -# T=/tmp/parallel-bug49791-$MD5 -# [ -e $T ] && rm -rf $T -# export PARALLEL="--shuf --result $T" -# parallel --sqlandworker $DBURL sleep .3\;echo \ -# ::: {1..5} ::: {a..e} >$T2; -# parallel --sqlworker $DBURL sleep .3\;echo >$T2 & -# parallel --sqlworker $DBURL sleep .3\;echo >$T2 & -# parallel --sqlworker $DBURL sleep .3\;echo >$T2 & -# parallel --sqlworker $DBURL sleep .3\;echo >$T2 & -# unset PARALLEL -# wait; -# # Did it compute correctly? -# cat $T/1/*/*/*/stdout -# # Did it shuffle -# SHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;") -# export PARALLEL="--result $T" -# parallel --sqlandworker $DBURL sleep .3\;echo \ -# ::: {1..5} ::: {a..e} >$T2; -# parallel --sqlworker $DBURL sleep .3\;echo >$T2 & -# parallel --sqlworker $DBURL sleep .3\;echo >$T2 & -# parallel --sqlworker $DBURL sleep .3\;echo >$T2 & -# parallel --sqlworker $DBURL sleep .3\;echo >$T2 & -# unset PARALLEL -# wait; -# NOSHUF=$(sql $SERVERURL "select Host,Command,V1,V2,Stdout,Stderr from $TABLE order by seq;") -# DIFFSIZE=$(diff <(echo "$SHUF") <(echo "$NOSHUF") | wc -c) -# if [ $DIFFSIZE -gt 2500 ]; then -# echo OK: Diff bigger than 2500 char -# fi -# [ -e $T ] && rm -rf $T -# touch $T1 -#} -# par_empty() { true; } @@ -123,4 +124,4 @@ export -f $(compgen -A function | egrep 'p_|par_') # Tested that -j0 in parallel is fastest (up to 15 jobs) compgen -A function | grep par_ | sort | stdout parallel -vj5 -k --tag --joblog /tmp/jl-`basename $0` p_wrapper \ - :::: - ::: \$MYSQL \$PG \$SQLITE + :::: - ::: \$MYSQL \$PG \$SQLITE | perl -pe 's/tbl\d+/TBL99999/gi' diff --git a/testsuite/tests-to-run/parallel-local-ssh1.sh b/testsuite/tests-to-run/parallel-local-ssh1.sh index d8429119..30b21c5b 100644 --- a/testsuite/tests-to-run/parallel-local-ssh1.sh +++ b/testsuite/tests-to-run/parallel-local-ssh1.sh @@ -31,9 +31,6 @@ echo '### bug #41805: Idea: propagate --env for parallel --number-of-cores' FOO=test_csh_filter parallel --filter-hosts --env FOO,HOME -S csh@lo -N0 env ::: "" |sort|egrep 'FOO|^HOME' echo '** bug #41805 done' -echo '### Deal with long command lines on remote servers' - perl -e 'print((("\""x5000)."\n")x26)' | parallel -j1 -S lo -N 10000 echo {} |wc - echo '### Test bug #34241: --pipe should not spawn unneeded processes' seq 5 | ssh csh@lo parallel -k --block 5 --pipe -j10 cat\\\;echo Block_end @@ -140,7 +137,7 @@ echo '### bug #46519: --onall ignores --transfer' echo '### Test --nice remote' stdout parallel --nice 1 -S lo -vv 'PAR=a bash -c "echo \$PAR {}"' ::: b | - perl -pe 's/\S*parallel-server\S*/one-server/;s:[a-z/\\+=0-9]{500,}:base64:i;' + perl -pe 's/\S*parallel-server\S*/one-server/;s:="[0-9]+":="XXXXX":i;' echo '**' diff --git a/testsuite/tests-to-run/parallel-local-ssh7.sh b/testsuite/tests-to-run/parallel-local-ssh7.sh index 64e000a3..2c12a05d 100755 --- a/testsuite/tests-to-run/parallel-local-ssh7.sh +++ b/testsuite/tests-to-run/parallel-local-ssh7.sh @@ -347,6 +347,8 @@ par_ksh_man() { env_parallel -k --env myarray echo '"${myarray[{}]}"' ::: 0 1 2 3 env_parallel -k --env myarray -S server echo '"${myarray[{}]}"' ::: 0 1 2 3 + echo This may never work + echo https://unix.stackexchange.com/questions/457031/extract-full-function-definitions env_parallel --argsep --- env_parallel -k echo ::: multi level --- env_parallel env_parallel ::: true false true false @@ -1502,6 +1504,7 @@ par_fish_env_parallel() { echo 'bug #50435: Remote fifo broke in 20150522' # Due to $PARALLEL_TMP being transferred set OK OK + echo TODO fix env_parallel --fifo echo data from stdin | env_parallel --pipe -S lo --fifo 'cat {}; and echo $OK' echo data from stdin | env_parallel --pipe -S lo --cat 'cat {}; and echo $OK' _EOF diff --git a/testsuite/tests-to-run/parallel-local12.sh b/testsuite/tests-to-run/parallel-local12.sh index 2df7638b..eab4e873 100644 --- a/testsuite/tests-to-run/parallel-local12.sh +++ b/testsuite/tests-to-run/parallel-local12.sh @@ -41,6 +41,7 @@ rm /tmp/parallel-script-for-script3 stdout parallel --citation < /dev/null touch ~/.parallel/will-cite +echo 1 > ~/.parallel/runs-without-willing-to-cite # Clear screen eval `resize` seq $LINES | parallel -N0 echo > /dev/tty diff --git a/testsuite/tests-to-run/parallel-local15.sh b/testsuite/tests-to-run/parallel-local15.sh index a656c8fc..5e58d38d 100755 --- a/testsuite/tests-to-run/parallel-local15.sh +++ b/testsuite/tests-to-run/parallel-local15.sh @@ -18,8 +18,8 @@ perl -e 'print map {"more_than_5000-$_\n" } (4000..9999)' | parallel -vj 0 touch echo '### rm' perl -e 'print map {"more_than_5000-$_\n" } (4000..9900)' | parallel -j 0 rm | sort cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1 | egrep -v 'parallel: Warning: Starting|parallel: Warning: Consider' -ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" {}\n\"}"' | sort -ls | parallel --group -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" {}\n\"}"' | sort +ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=pQ($_)=}"\n\"}"' | sort +ls | parallel --group -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=pQ($_)=}"\n\"}"' | sort find . -type f | parallel --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | sort find . -type f | parallel -v --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | sort find . -type f | parallel -q --group perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' | sort diff --git a/testsuite/tests-to-run/parallel-local18.sh b/testsuite/tests-to-run/parallel-local18.sh index 9266d433..72e49879 100644 --- a/testsuite/tests-to-run/parallel-local18.sh +++ b/testsuite/tests-to-run/parallel-local18.sh @@ -37,6 +37,7 @@ par_special_char() { echo a"$SPC"b 5 LANG=C stdout parallel --env SPC echo 'a"$SPC"b' ::: 5 LANG=C stdout parallel -S localhost --env SPC echo 'a"$SPC"b' ::: 5 + # \ misses due to quoting incompatiblilty between bash and csh LANG=C stdout parallel -S csh@localhost --env SPC echo 'a"$SPC"b' ::: 5 LANG=C stdout parallel -S tcsh@localhost --env SPC echo 'a"$SPC"b' ::: 5 } diff --git a/testsuite/tests-to-run/parallel-local7.sh b/testsuite/tests-to-run/parallel-local7.sh index 4bc9aacc..8c720933 100755 --- a/testsuite/tests-to-run/parallel-local7.sh +++ b/testsuite/tests-to-run/parallel-local7.sh @@ -27,40 +27,28 @@ export -f par_tmux cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj8 --delay 1 --timeout 100 --retries 1 -k --joblog /tmp/jl-`basename $0` -L1 echo '### tmux-1.9' - seq 000 100 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 100 200 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 200 300 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 300 400 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 400 500 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 500 600 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 600 700 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 700 800 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 800 900 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 900 1000 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 1000 1100 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 1100 1200 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 1200 1300 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 1300 1400 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 1400 1500 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 1500 1600 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 1600 1700 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 1700 1800 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 1800 1900 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 1900 2000 | PARALLEL_TMUX=tmux-1.9 par_tmux - seq 2000 2018 | PARALLEL_TMUX=tmux-1.9 par_tmux + seq 0000 10 1000 | PARALLEL_TMUX=tmux-1.9 par_tmux + seq 1001 10 2000 | PARALLEL_TMUX=tmux-1.9 par_tmux + seq 2001 10 3000 | PARALLEL_TMUX=tmux-1.9 par_tmux + seq 3001 10 4000 | PARALLEL_TMUX=tmux-1.9 par_tmux + seq 4001 10 4030 | PARALLEL_TMUX=tmux-1.9 par_tmux + echo '### tmux-1.9 fails' - echo 2019 | PARALLEL_TMUX=tmux-1.9 par_tmux - echo 2020 | PARALLEL_TMUX=tmux-1.9 par_tmux - echo 2021 | PARALLEL_TMUX=tmux-1.9 par_tmux + echo 4036 | PARALLEL_TMUX=tmux-1.9 par_tmux + echo 4037 | PARALLEL_TMUX=tmux-1.9 par_tmux + echo 4038 | PARALLEL_TMUX=tmux-1.9 par_tmux echo '### tmux-1.8' - seq 1 100 | PARALLEL_TMUX=tmux-1.8 par_tmux - seq 101 200 | PARALLEL_TMUX=tmux-1.8 par_tmux - seq 201 231 | PARALLEL_TMUX=tmux-1.8 par_tmux + seq 1 5 100 | PARALLEL_TMUX=tmux-1.8 par_tmux + seq 101 5 200 | PARALLEL_TMUX=tmux-1.8 par_tmux + seq 201 5 300 | PARALLEL_TMUX=tmux-1.8 par_tmux + seq 301 5 400 | PARALLEL_TMUX=tmux-1.8 par_tmux + seq 401 5 460 | PARALLEL_TMUX=tmux-1.8 par_tmux + echo '### tmux-1.8 fails' - echo 232 | PARALLEL_TMUX=tmux-1.8 par_tmux - echo 233 | PARALLEL_TMUX=tmux-1.8 par_tmux - echo 234 | PARALLEL_TMUX=tmux-1.8 par_tmux + echo 462 | PARALLEL_TMUX=tmux-1.8 par_tmux + echo 463 | PARALLEL_TMUX=tmux-1.8 par_tmux + echo 464 | PARALLEL_TMUX=tmux-1.8 par_tmux echo '### tmux-1.8 0..255 ascii' perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } $_-110..$_),"\n" } 0..255' | diff --git a/testsuite/tests-to-run/parallel-local9.sh b/testsuite/tests-to-run/parallel-local9.sh index 45c70b87..59e3aeb6 100644 --- a/testsuite/tests-to-run/parallel-local9.sh +++ b/testsuite/tests-to-run/parallel-local9.sh @@ -49,18 +49,6 @@ echo '### Test --spreadstdin -k'; echo '### Test --spreadstdin --files'; nice seq 1 1000000 | shuf | $NICEPAR --files --recend "\n" -j10 --spreadstdin sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum -echo '### Test --number-of-cpus'; - stdout $NICEPAR --number-of-cpus - -echo '### Test --number-of-cores'; - stdout $NICEPAR --number-of-cores - -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 - echo '### Test --tag ::: a ::: b'; stdout $NICEPAR -k --tag -j1 echo stderr-{.} ">&2;" echo stdout-{} ::: a ::: b diff --git a/testsuite/wanted-results/parallel-local-0.3s b/testsuite/wanted-results/parallel-local-0.3s index 32359592..99eb67e5 100644 --- a/testsuite/wanted-results/parallel-local-0.3s +++ b/testsuite/wanted-results/parallel-local-0.3s @@ -348,9 +348,9 @@ echo '**' echo 'bug #47290: xargs: Warning: a NUL character occurred in the input' bug #47290: xargs: Warning: a NUL character occurred in the input perl -e 'print "foo\0not printed"' | parallel echo -foo -parallel: Warning: a NUL character occurred in the input. -parallel: Warning: It cannot be passed through in the argument list. +foo\0not printed +parallel: Warning: A NUL character in the input was replaced with \0. +parallel: Warning: NUL cannot be passed through in the argument list. parallel: Warning: Did you mean to use the --null option? echo '**' ** @@ -979,106 +979,106 @@ h i 97 98 99 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 1 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 10 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 100 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 11 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 12 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 13 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 14 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 15 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 16 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 17 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 18 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 19 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 2 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 20 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 21 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 22 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 23 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 24 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 25 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 26 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 27 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 28 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 29 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 3 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 30 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 31 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 32 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 33 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 34 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 35 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 36 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 37 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 38 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 39 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 4 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 40 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 41 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 42 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 43 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 44 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 45 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 46 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 47 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 48 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 49 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 5 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 50 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 51 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 52 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 53 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 54 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 55 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 56 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 57 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 58 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 59 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 6 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 60 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 61 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 62 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 63 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 64 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 65 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 66 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 67 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 68 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 69 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 7 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 70 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 71 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 72 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 73 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 74 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 75 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 76 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 77 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 78 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 79 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 8 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 80 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 81 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 82 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 83 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 84 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 85 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 86 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 87 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 88 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 89 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 9 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 90 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 91 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 92 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 93 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 94 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 95 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 96 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 97 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 98 -perl -e \$r\=rand\(shift\)\;for\(\$f\=0\;\$f\<\$r\;\$f++\)\{\$a\=\"a\"x100\}\;print\ shift,\"\\n\" 10000 99 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 1 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 10 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 100 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 11 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 12 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 13 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 14 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 15 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 16 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 17 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 18 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 19 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 2 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 20 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 21 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 22 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 23 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 24 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 25 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 26 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 27 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 28 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 29 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 3 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 30 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 31 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 32 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 33 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 34 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 35 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 36 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 37 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 38 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 39 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 4 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 40 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 41 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 42 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 43 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 44 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 45 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 46 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 47 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 48 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 49 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 5 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 50 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 51 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 52 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 53 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 54 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 55 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 56 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 57 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 58 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 59 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 6 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 60 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 61 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 62 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 63 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 64 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 65 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 66 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 67 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 68 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 69 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 7 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 70 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 71 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 72 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 73 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 74 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 75 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 76 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 77 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 78 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 79 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 8 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 80 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 81 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 82 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 83 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 84 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 85 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 86 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 87 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 88 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 89 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 9 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 90 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 91 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 92 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 93 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 94 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 95 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 96 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 97 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 98 +perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 99 echo '### Test 0-arguments' ### Test 0-arguments seq 1 2 | parallel -k -n0 echo n0 @@ -1321,7 +1321,7 @@ par_expansion_in_colsep AB par_extglob env_parallel par_file_ending_in_newline ### Hans found a bug giving unitialized variable par_file_ending_in_newline gzip /tmp/parallel_f1 -par_file_ending_in_newline gzip /tmp/parallel_f2' +par_file_ending_in_newline gzip '/tmp/parallel_f2 par_file_ending_in_newline ' par_halt_one_job # Halt soon if there is a single job par_halt_one_job should run 0 1 = job 1 2 @@ -1372,8 +1372,8 @@ par_link_files_as_only_arg 3 3 3 par_locale_quoting ### quoting in different locales par_locale_quoting `/tmp/test` par_locale_quoting $LC_ALL `/tmp/test` -par_locale_quoting echo $LC_ALL \\`/tmp/test\\` -par_locale_quoting C `/tmp/test` +par_locale_quoting echo $LC_ALL '`/tmp/test`' +par_locale_quoting zh_HK.big5hkscs `/tmp/test` par_newline_in_command Command with newline and positional replacement strings par_newline_in_command O K par_no_command_given ### Test bugfix if no command given diff --git a/testsuite/wanted-results/parallel-local-10s b/testsuite/wanted-results/parallel-local-10s index 7720d741..179c1191 100644 --- a/testsuite/wanted-results/parallel-local-10s +++ b/testsuite/wanted-results/parallel-local-10s @@ -256,6 +256,9 @@ par_linebuffer_tag_slow_output a a par_linebuffer_tag_slow_output a par_linebuffer_tag_slow_output b b par_linebuffer_tag_slow_output b +par_long_line_remote ### Deal with long command lines on remote servers +par_long_line_remote 2 6 30006 +par_long_line_remote 2 50 250050 par_maxlinelen_X_I ### Test max line length -X -I par_maxlinelen_X_I 3cfc69ee81b0fe7fdbe8eb059ad2da61 - par_maxlinelen_X_I Chars per line (817788/7): 116826 @@ -523,6 +526,15 @@ par_slow_total_jobs b par_slow_total_jobs 1 par_slow_total_jobs 2 par_slow_total_jobs parallel: Warning: Reading X arguments took longer than XX seconds. +par_sockets_cores_threads ### Test --number-of-sockets/cores/threads +par_sockets_cores_threads 1 +par_sockets_cores_threads 2 +par_sockets_cores_threads 2 +par_sockets_cores_threads 2 +par_sockets_cores_threads ### Test --use-sockets-instead-of-threads +par_sockets_cores_threads threads done +par_sockets_cores_threads sockets done +par_sockets_cores_threads Threads should complete first on machines with less than 8 sockets par_tmux_fg bug #50107: --tmux --fg should also write how to access it par_tmux_fg See output with: tmux -S tmp attach par_tmux_fg open terminal failed: not a terminal diff --git a/testsuite/wanted-results/parallel-local-1s b/testsuite/wanted-results/parallel-local-1s index 0624460f..f6073dca 100644 --- a/testsuite/wanted-results/parallel-local-1s +++ b/testsuite/wanted-results/parallel-local-1s @@ -27,84 +27,84 @@ par_failing_compressor Compress with failing (de)compressor par_failing_compressor Test --tag/--line-buffer/--files in all combinations par_failing_compressor Test working/failing compressor/decompressor in all combinations par_failing_compressor (-k is used as a dummy argument) -par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program cat\;true --decompress-program cat\;true echo ::: C=cat\;true,D=cat\;true +par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true' par_failing_compressor C=cat;true,D=cat;true /tmp/parallel-local-1s-tmpdir/tmpfile -par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program cat\;true --decompress-program cat\;false echo ::: C=cat\;true,D=cat\;false +par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false' par_failing_compressor C=cat;true,D=cat;false /tmp/parallel-local-1s-tmpdir/tmpfile -par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program cat\;false --decompress-program cat\;true echo ::: C=cat\;false,D=cat\;true +par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true' par_failing_compressor C=cat;false,D=cat;true /tmp/parallel-local-1s-tmpdir/tmpfile par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program cat\;false --decompress-program cat\;false echo ::: C=cat\;false,D=cat\;false +par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false' par_failing_compressor C=cat;false,D=cat;false /tmp/parallel-local-1s-tmpdir/tmpfile par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program cat\;true --decompress-program cat\;true echo ::: C=cat\;true,D=cat\;true +par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true' par_failing_compressor C=cat;true,D=cat;true C=cat;true,D=cat;true -par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program cat\;true --decompress-program cat\;false echo ::: C=cat\;true,D=cat\;false +par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false' par_failing_compressor C=cat;true,D=cat;false C=cat;true,D=cat;false -par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program cat\;false --decompress-program cat\;true echo ::: C=cat\;false,D=cat\;true +par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true' par_failing_compressor C=cat;false,D=cat;true C=cat;false,D=cat;true par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program cat\;false --decompress-program cat\;false echo ::: C=cat\;false,D=cat\;false +par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false' par_failing_compressor C=cat;false,D=cat;false C=cat;false,D=cat;false par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k --tag -k --files --compress --compress-program cat\;true --decompress-program cat\;true echo ::: C=cat\;true,D=cat\;true +par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true' par_failing_compressor C=cat;true,D=cat;true /tmp/parallel-local-1s-tmpdir/tmpfile -par_failing_compressor parallel -k --tag -k --files --compress --compress-program cat\;true --decompress-program cat\;false echo ::: C=cat\;true,D=cat\;false +par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false' par_failing_compressor C=cat;true,D=cat;false /tmp/parallel-local-1s-tmpdir/tmpfile -par_failing_compressor parallel -k --tag -k --files --compress --compress-program cat\;false --decompress-program cat\;true echo ::: C=cat\;false,D=cat\;true +par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true' par_failing_compressor C=cat;false,D=cat;true /tmp/parallel-local-1s-tmpdir/tmpfile par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k --tag -k --files --compress --compress-program cat\;false --decompress-program cat\;false echo ::: C=cat\;false,D=cat\;false +par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false' par_failing_compressor C=cat;false,D=cat;false /tmp/parallel-local-1s-tmpdir/tmpfile par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k --tag -k -k --compress --compress-program cat\;true --decompress-program cat\;true echo ::: C=cat\;true,D=cat\;true +par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true' par_failing_compressor C=cat;true,D=cat;true C=cat;true,D=cat;true -par_failing_compressor parallel -k --tag -k -k --compress --compress-program cat\;true --decompress-program cat\;false echo ::: C=cat\;true,D=cat\;false +par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false' par_failing_compressor C=cat;true,D=cat;false C=cat;true,D=cat;false -par_failing_compressor parallel -k --tag -k -k --compress --compress-program cat\;false --decompress-program cat\;true echo ::: C=cat\;false,D=cat\;true +par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true' par_failing_compressor C=cat;false,D=cat;true C=cat;false,D=cat;true par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k --tag -k -k --compress --compress-program cat\;false --decompress-program cat\;false echo ::: C=cat\;false,D=cat\;false +par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false' par_failing_compressor C=cat;false,D=cat;false C=cat;false,D=cat;false par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program cat\;true --decompress-program cat\;true echo ::: C=cat\;true,D=cat\;true +par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true' par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile -par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program cat\;true --decompress-program cat\;false echo ::: C=cat\;true,D=cat\;false +par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false' par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile -par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program cat\;false --decompress-program cat\;true echo ::: C=cat\;false,D=cat\;true +par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true' par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program cat\;false --decompress-program cat\;false echo ::: C=cat\;false,D=cat\;false +par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false' par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program cat\;true --decompress-program cat\;true echo ::: C=cat\;true,D=cat\;true +par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true' par_failing_compressor C=cat;true,D=cat;true -par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program cat\;true --decompress-program cat\;false echo ::: C=cat\;true,D=cat\;false +par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false' par_failing_compressor C=cat;true,D=cat;false -par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program cat\;false --decompress-program cat\;true echo ::: C=cat\;false,D=cat\;true +par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true' par_failing_compressor C=cat;false,D=cat;true par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program cat\;false --decompress-program cat\;false echo ::: C=cat\;false,D=cat\;false +par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false' par_failing_compressor C=cat;false,D=cat;false par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k -k --files --compress --compress-program cat\;true --decompress-program cat\;true echo ::: C=cat\;true,D=cat\;true +par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true' par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile -par_failing_compressor parallel -k -k -k --files --compress --compress-program cat\;true --decompress-program cat\;false echo ::: C=cat\;true,D=cat\;false +par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false' par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile -par_failing_compressor parallel -k -k -k --files --compress --compress-program cat\;false --decompress-program cat\;true echo ::: C=cat\;false,D=cat\;true +par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true' par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k -k --files --compress --compress-program cat\;false --decompress-program cat\;false echo ::: C=cat\;false,D=cat\;false +par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false' par_failing_compressor /tmp/parallel-local-1s-tmpdir/tmpfile par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k -k -k --compress --compress-program cat\;true --decompress-program cat\;true echo ::: C=cat\;true,D=cat\;true +par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true' par_failing_compressor C=cat;true,D=cat;true -par_failing_compressor parallel -k -k -k -k --compress --compress-program cat\;true --decompress-program cat\;false echo ::: C=cat\;true,D=cat\;false +par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false' par_failing_compressor C=cat;true,D=cat;false -par_failing_compressor parallel -k -k -k -k --compress --compress-program cat\;false --decompress-program cat\;true echo ::: C=cat\;false,D=cat\;true +par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true' par_failing_compressor C=cat;false,D=cat;true par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k -k -k --compress --compress-program cat\;false --decompress-program cat\;false echo ::: C=cat\;false,D=cat\;false +par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false' par_failing_compressor C=cat;false,D=cat;false par_failing_compressor parallel: Error: cat;false failed. par_fifo_under_csh ### Test --fifo under csh @@ -371,26 +371,26 @@ par_result /tmp/parallel_results_test/testC/a/II/b/IIII/seq par_result /tmp/parallel_results_test/testC/a/II/b/IIII/stderr par_result /tmp/parallel_results_test/testC/a/II/b/IIII/stdout par_result ### Test --results --header : piped -par_result parallel: Warning: a NUL character occurred in the input. -par_result parallel: Warning: It cannot be passed through in the argument list. +par_result parallel: Warning: A NUL character in the input was replaced with \0. +par_result parallel: Warning: NUL cannot be passed through in the argument list. par_result parallel: Warning: Did you mean to use the --null option? par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2 -par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\0eof -par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\0eof/seq -par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\0eof/stderr -par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\0eof/stdout +par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\\0eof +par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\\0eof/seq +par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\\0eof/stderr +par_result /tmp/parallel_results_test/testF/Col/backslash\\tab/2/slash\_null\\0eof/stdout par_result ### Test --results --header : piped - non-existing column header -par_result parallel: Warning: a NUL character occurred in the input. -par_result parallel: Warning: It cannot be passed through in the argument list. +par_result parallel: Warning: A NUL character in the input was replaced with \0. +par_result parallel: Warning: NUL cannot be passed through in the argument list. par_result parallel: Warning: Did you mean to use the --null option? par_result /tmp/parallel_results_test/testG/ par_result /tmp/parallel_results_test/testG/Col1 par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2 -par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\0eof -par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\0eof/seq -par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\0eof/stderr -par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\0eof/stdout +par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\\0eof +par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\\0eof/seq +par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\\0eof/stderr +par_result /tmp/parallel_results_test/testG/Col1/backslash\\tab/2/slash\_null\\0eof/stdout par_result /tmp/parallel_results_test/testG/Col1/v1 par_result /tmp/parallel_results_test/testG/Col1/v1/2 par_result /tmp/parallel_results_test/testG/Col1/v1/2/v2 diff --git a/testsuite/wanted-results/parallel-local-30s b/testsuite/wanted-results/parallel-local-30s index c4cdc3e3..d7d7841b 100644 --- a/testsuite/wanted-results/parallel-local-30s +++ b/testsuite/wanted-results/parallel-local-30s @@ -108,8 +108,8 @@ par_macron par_macron "" par_macron par_macron -par_macron -par_macron +par_macron +par_macron par_macron par_macron par_macron "" @@ -164,41 +164,41 @@ par_race_condition1 8 par_race_condition1 9 par_race_condition1 10 par_shellquote ### Test --shellquote in all shells -par_shellquote ash \\\\\\\\ ' -par_shellquote ash '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -par_shellquote bash \\\\\\\\ ' -par_shellquote bash '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ +par_shellquote ash ' +par_shellquote ash  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' +par_shellquote bash ' +par_shellquote bash  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' par_shellquote csh \\\\\\\\ "\ par_shellquote csh "\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -par_shellquote dash \\\\\\\\ ' -par_shellquote dash '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -par_shellquote fish \\\\\\\\ ' -par_shellquote fish '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -par_shellquote fizsh \\\\\\\\ ' -par_shellquote fizsh '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -par_shellquote ksh \\\\\\\\ ' -par_shellquote ksh '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -par_shellquote ksh93 \\\\\\\\ ' -par_shellquote ksh93 '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -par_shellquote lksh \\\\\\\\ ' -par_shellquote lksh '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -par_shellquote mksh \\\\\\\\ ' -par_shellquote mksh '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -par_shellquote posh \\\\\\\\ ' -par_shellquote posh '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ +par_shellquote dash ' +par_shellquote dash  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' +par_shellquote fish ' +par_shellquote fish  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' +par_shellquote fizsh ' +par_shellquote fizsh  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' +par_shellquote ksh ' +par_shellquote ksh  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' +par_shellquote ksh93 ' +par_shellquote ksh93  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' +par_shellquote lksh ' +par_shellquote lksh  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' +par_shellquote mksh ' +par_shellquote mksh  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' +par_shellquote posh ' +par_shellquote posh  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' par_shellquote rzsh zsh:1: /bin/echo: restricted -par_shellquote sash \\\\\\\\ ' -par_shellquote sash '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -par_shellquote sh \\\\\\\\ ' -par_shellquote sh '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -par_shellquote static-sh \\\\\\\\ ' -par_shellquote static-sh '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ +par_shellquote sash ' +par_shellquote sash  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' +par_shellquote sh ' +par_shellquote sh  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' +par_shellquote static-sh ' +par_shellquote static-sh  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' par_shellquote tcsh \\\\\\\\ "\ par_shellquote tcsh "\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -par_shellquote yash \\\\\\\\ ' -par_shellquote yash '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ -par_shellquote zsh \\\\\\\\ ' -par_shellquote zsh '\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ +par_shellquote yash ' +par_shellquote yash  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' +par_shellquote zsh ' +par_shellquote zsh  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' par_shellquote csh \\\\\\\\ "\ par_shellquote csh "\ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ par_shellquote tcsh \\\\\\\\ "\ diff --git a/testsuite/wanted-results/parallel-local-3s b/testsuite/wanted-results/parallel-local-3s index 64003515..90cdd640 100644 --- a/testsuite/wanted-results/parallel-local-3s +++ b/testsuite/wanted-results/parallel-local-3s @@ -58,7 +58,7 @@ par_kill_term_twice bash-+-perl---bash---sleep par_kill_term_twice `-pstree par_kill_term_twice parallel: SIGTERM received. No new jobs will be started. par_kill_term_twice parallel: Waiting for these 1 jobs to finish. Send SIGTERM again to stop now. -par_kill_term_twice parallel: bash -c sleep\ 120\ \&\ pid\=\$\!\;\ wait\ \$pid 1 +par_kill_term_twice parallel: bash -c 'sleep 120 & pid=$!; wait $pid' 1 par_kill_term_twice bash-+-perl---bash---sleep par_kill_term_twice `-pstree par_kill_term_twice bash---pstree diff --git a/testsuite/wanted-results/parallel-local-race01 b/testsuite/wanted-results/parallel-local-race01 index 7061f437..2d218c3d 100644 --- a/testsuite/wanted-results/parallel-local-race01 +++ b/testsuite/wanted-results/parallel-local-race01 @@ -12,20 +12,20 @@ par_print_before_halt_on_error ### What is printed before the jobs are killed par_print_before_halt_on_error -2 exit code 0 par_print_before_halt_on_error -2 0.1 0.1 par_print_before_halt_on_error -2 parallel: This job succeeded: -par_print_before_halt_on_error -2 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ -2\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 0.1 +par_print_before_halt_on_error -2 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; -2 > 0 ? exit shift : exit not shift;' 0.1 par_print_before_halt_on_error -1 exit code 0 par_print_before_halt_on_error -1 0.1 0.1 par_print_before_halt_on_error -1 parallel: This job succeeded: -par_print_before_halt_on_error -1 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ -1\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 0.1 +par_print_before_halt_on_error -1 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; -1 > 0 ? exit shift : exit not shift;' 0.1 par_print_before_halt_on_error -1 parallel: Starting no more jobs. Waiting for 3 jobs to finish. par_print_before_halt_on_error -1 parallel: This job succeeded: -par_print_before_halt_on_error -1 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ -1\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 1 +par_print_before_halt_on_error -1 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; -1 > 0 ? exit shift : exit not shift;' 1 par_print_before_halt_on_error -1 parallel: Starting no more jobs. Waiting for 1 jobs to finish. par_print_before_halt_on_error -1 3.2 3.2 par_print_before_halt_on_error -1 0 0 par_print_before_halt_on_error -1 1 1 par_print_before_halt_on_error -1 parallel: This job succeeded: -par_print_before_halt_on_error -1 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ -1\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 3.2 +par_print_before_halt_on_error -1 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; -1 > 0 ? exit shift : exit not shift;' 3.2 par_print_before_halt_on_error 0 exit code 1 par_print_before_halt_on_error 0 0.1 0.1 par_print_before_halt_on_error 0 3.2 3.2 @@ -42,22 +42,22 @@ par_print_before_halt_on_error 0 8 8 par_print_before_halt_on_error 1 exit code 1 par_print_before_halt_on_error 1 0.1 0.1 par_print_before_halt_on_error 1 parallel: This job failed: -par_print_before_halt_on_error 1 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ 1\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 1 +par_print_before_halt_on_error 1 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; 1 > 0 ? exit shift : exit not shift;' 1 par_print_before_halt_on_error 1 parallel: Starting no more jobs. Waiting for 3 jobs to finish. par_print_before_halt_on_error 1 parallel: This job failed: -par_print_before_halt_on_error 1 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ 1\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 2 +par_print_before_halt_on_error 1 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; 1 > 0 ? exit shift : exit not shift;' 2 par_print_before_halt_on_error 1 parallel: Starting no more jobs. Waiting for 2 jobs to finish. par_print_before_halt_on_error 1 3.2 3.2 par_print_before_halt_on_error 1 0 0 par_print_before_halt_on_error 1 1 1 par_print_before_halt_on_error 1 2 2 par_print_before_halt_on_error 1 parallel: This job failed: -par_print_before_halt_on_error 1 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ 1\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 3.2 +par_print_before_halt_on_error 1 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; 1 > 0 ? exit shift : exit not shift;' 3.2 par_print_before_halt_on_error 1 parallel: Starting no more jobs. Waiting for 1 jobs to finish. par_print_before_halt_on_error 1 3 3 par_print_before_halt_on_error 1 parallel: This job failed: -par_print_before_halt_on_error 1 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ 1\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 3 +par_print_before_halt_on_error 1 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; 1 > 0 ? exit shift : exit not shift;' 3 par_print_before_halt_on_error 2 exit code 1 par_print_before_halt_on_error 2 0.1 0.1 par_print_before_halt_on_error 2 parallel: This job failed: -par_print_before_halt_on_error 2 perl -e sleep\ 1\;\ sleep\ \$ARGV\[0\]\;\ print\ STDERR\ \"\",@ARGV,\"\\n\"\;\ 2\ \>\ 0\ \?\ exit\ shift\ :\ exit\ not\ shift\; 1 +par_print_before_halt_on_error 2 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR "",@ARGV,"\n"; 2 > 0 ? exit shift : exit not shift;' 1 diff --git a/testsuite/wanted-results/parallel-local-sql b/testsuite/wanted-results/parallel-local-sql index 4fb32b32..687ed636 100644 --- a/testsuite/wanted-results/parallel-local-sql +++ b/testsuite/wanted-results/parallel-local-sql @@ -1,4 +1,4 @@ -par_append_different_cmd $MYSQL p_wrapper par_append_different_cmd \$MYSQL +par_append_different_cmd $MYSQL p_wrapper par_append_different_cmd '$MYSQL' par_append_different_cmd $MYSQL Exit=0 par_append_different_cmd $MYSQL Exit=0 par_append_different_cmd $MYSQL Command V1 V2 Stdout Stderr @@ -52,7 +52,7 @@ par_append_different_cmd $MYSQL sleep .3;echo B-15 15 B B-15\n par_append_different_cmd $MYSQL sleep .3;echo C-15 15 C C-15\n par_append_different_cmd $MYSQL sleep .3;echo D-15 15 D D-15\n par_append_different_cmd $MYSQL sleep .3;echo E-15 15 E E-15\n -par_append_different_cmd $PG p_wrapper par_append_different_cmd \$PG +par_append_different_cmd $PG p_wrapper par_append_different_cmd '$PG' par_append_different_cmd $PG Exit=0 par_append_different_cmd $PG Exit=0 par_append_different_cmd $PG command | v1 | v2 | stdout | stderr @@ -159,7 +159,7 @@ par_append_different_cmd $PG sleep .3;echo E-15 | 15 | E | E-15 +| par_append_different_cmd $PG | | | | par_append_different_cmd $PG (50 rows) par_append_different_cmd $PG -par_append_different_cmd $SQLITE p_wrapper par_append_different_cmd \$SQLITE +par_append_different_cmd $SQLITE p_wrapper par_append_different_cmd '$SQLITE' par_append_different_cmd $SQLITE Exit=0 par_append_different_cmd $SQLITE Exit=0 par_append_different_cmd $SQLITE Command|V1|V2|Stdout|Stderr @@ -263,7 +263,7 @@ par_append_different_cmd $SQLITE sleep .3;echo D-15|15|D|D-15 par_append_different_cmd $SQLITE | par_append_different_cmd $SQLITE sleep .3;echo E-15|15|E|E-15 par_append_different_cmd $SQLITE | -par_no_table $MYSQL p_wrapper par_no_table \$MYSQL +par_no_table $MYSQL p_wrapper par_no_table '$MYSQL' par_no_table $MYSQL bug #50018: --dburl without table dies par_no_table $MYSQL 255 par_no_table $MYSQL 255 @@ -275,7 +275,7 @@ par_no_table $MYSQL true dummy dummy dummy dummy par_no_table $MYSQL parallel: Error: The DBURL (mysql://tange:tange@lo/tange) must contain a table. par_no_table $MYSQL parallel: Error: The DBURL (mysql://tange:tange@lo/tange) must contain a table. par_no_table $MYSQL parallel: Error: The DBURL (mysql://tange:tange@lo/tange) must contain a table. -par_no_table $PG p_wrapper par_no_table \$PG +par_no_table $PG p_wrapper par_no_table '$PG' par_no_table $PG bug #50018: --dburl without table dies par_no_table $PG 255 par_no_table $PG 255 @@ -290,7 +290,7 @@ par_no_table $PG par_no_table $PG parallel: Error: The DBURL (pg://tange:tange@lo/tange) must contain a table. par_no_table $PG parallel: Error: The DBURL (pg://tange:tange@lo/tange) must contain a table. par_no_table $PG parallel: Error: The DBURL (pg://tange:tange@lo/tange) must contain a table. -par_no_table $SQLITE p_wrapper par_no_table \$SQLITE +par_no_table $SQLITE p_wrapper par_no_table '$SQLITE' par_no_table $SQLITE bug #50018: --dburl without table dies par_no_table $SQLITE 255 par_no_table $SQLITE 255 @@ -302,7 +302,7 @@ par_no_table $SQLITE true dummy dummy|dummy|dummy|| par_no_table $SQLITE parallel: Error: The DBURL (sqlite3:///%2Frun%2Fshm%2Fparallel.db) must contain a table. par_no_table $SQLITE parallel: Error: The DBURL (sqlite3:///%2Frun%2Fshm%2Fparallel.db) must contain a table. par_no_table $SQLITE parallel: Error: The DBURL (sqlite3:///%2Frun%2Fshm%2Fparallel.db) must contain a table. -par_shuf $MYSQL p_wrapper par_shuf \$MYSQL +par_shuf $MYSQL p_wrapper par_shuf '$MYSQL' par_shuf $MYSQL 1 a par_shuf $MYSQL 1 b par_shuf $MYSQL 1 c @@ -357,7 +357,7 @@ par_shuf $MYSQL sleep .3;echo 5 b 5 b /tmp/parallel-bug49791-c20/1/5/2/b/stdout par_shuf $MYSQL sleep .3;echo 5 c 5 c /tmp/parallel-bug49791-c20/1/5/2/c/stdout /tmp/parallel-bug49791-c20/1/5/2/c/stderr par_shuf $MYSQL sleep .3;echo 5 d 5 d /tmp/parallel-bug49791-c20/1/5/2/d/stdout /tmp/parallel-bug49791-c20/1/5/2/d/stderr par_shuf $MYSQL sleep .3;echo 5 e 5 e /tmp/parallel-bug49791-c20/1/5/2/e/stdout /tmp/parallel-bug49791-c20/1/5/2/e/stderr -par_shuf $PG p_wrapper par_shuf \$PG +par_shuf $PG p_wrapper par_shuf '$PG' par_shuf $PG 1 a par_shuf $PG 1 b par_shuf $PG 1 c @@ -415,7 +415,7 @@ par_shuf $PG sleep .3;echo 5 d | 5 | d | /tmp/parallel-bug49791-792/1/5/2/d/s par_shuf $PG sleep .3;echo 5 e | 5 | e | /tmp/parallel-bug49791-792/1/5/2/e/stdout | /tmp/parallel-bug49791-792/1/5/2/e/stderr par_shuf $PG (25 rows) par_shuf $PG -par_shuf $SQLITE p_wrapper par_shuf \$SQLITE +par_shuf $SQLITE p_wrapper par_shuf '$SQLITE' par_shuf $SQLITE 1 a par_shuf $SQLITE 1 b par_shuf $SQLITE 1 c @@ -470,7 +470,7 @@ par_shuf $SQLITE sleep .3;echo 5 b|5|b|/tmp/parallel-bug49791-932/1/5/2/b/stdout par_shuf $SQLITE sleep .3;echo 5 c|5|c|/tmp/parallel-bug49791-932/1/5/2/c/stdout|/tmp/parallel-bug49791-932/1/5/2/c/stderr par_shuf $SQLITE sleep .3;echo 5 d|5|d|/tmp/parallel-bug49791-932/1/5/2/d/stdout|/tmp/parallel-bug49791-932/1/5/2/d/stderr par_shuf $SQLITE sleep .3;echo 5 e|5|e|/tmp/parallel-bug49791-932/1/5/2/e/stdout|/tmp/parallel-bug49791-932/1/5/2/e/stderr -par_sql_joblog $MYSQL p_wrapper par_sql_joblog \$MYSQL +par_sql_joblog $MYSQL p_wrapper par_sql_joblog '$MYSQL' par_sql_joblog $MYSQL ### should only give a single --joblog heading par_sql_joblog $MYSQL ### --sqlmaster/--sqlworker par_sql_joblog $MYSQL Seq Host Starttime JobRuntime Send Receive Exitval Signal Command @@ -604,7 +604,7 @@ par_sql_joblog $MYSQL sleep .3;echo 5 b 5 b 5 b\n par_sql_joblog $MYSQL sleep .3;echo 5 c 5 c 5 c\n par_sql_joblog $MYSQL sleep .3;echo 5 d 5 d 5 d\n par_sql_joblog $MYSQL sleep .3;echo 5 e 5 e 5 e\n -par_sql_joblog $PG p_wrapper par_sql_joblog \$PG +par_sql_joblog $PG p_wrapper par_sql_joblog '$PG' par_sql_joblog $PG ### should only give a single --joblog heading par_sql_joblog $PG ### --sqlmaster/--sqlworker par_sql_joblog $PG Seq Host Starttime JobRuntime Send Receive Exitval Signal Command @@ -766,7 +766,7 @@ par_sql_joblog $PG sleep .3;echo 5 e | 5 | e | 5 e +| par_sql_joblog $PG | | | | par_sql_joblog $PG (25 rows) par_sql_joblog $PG -par_sql_joblog $SQLITE p_wrapper par_sql_joblog \$SQLITE +par_sql_joblog $SQLITE p_wrapper par_sql_joblog '$SQLITE' par_sql_joblog $SQLITE ### should only give a single --joblog heading par_sql_joblog $SQLITE ### --sqlmaster/--sqlworker par_sql_joblog $SQLITE Seq Host Starttime JobRuntime Send Receive Exitval Signal Command @@ -925,7 +925,7 @@ par_sql_joblog $SQLITE sleep .3;echo 5 d|5|d|5 d par_sql_joblog $SQLITE | par_sql_joblog $SQLITE sleep .3;echo 5 e|5|e|5 e par_sql_joblog $SQLITE | -par_sqlandworker $MYSQL p_wrapper par_sqlandworker \$MYSQL +par_sqlandworker $MYSQL p_wrapper par_sqlandworker '$MYSQL' par_sqlandworker $MYSQL Exit=0 par_sqlandworker $MYSQL Exit=0 par_sqlandworker $MYSQL Command V1 V2 Stdout Stderr @@ -954,7 +954,7 @@ par_sqlandworker $MYSQL sleep .3;echo 5 b 5 b 5 b\n par_sqlandworker $MYSQL sleep .3;echo 5 c 5 c 5 c\n par_sqlandworker $MYSQL sleep .3;echo 5 d 5 d 5 d\n par_sqlandworker $MYSQL sleep .3;echo 5 e 5 e 5 e\n -par_sqlandworker $PG p_wrapper par_sqlandworker \$PG +par_sqlandworker $PG p_wrapper par_sqlandworker '$PG' par_sqlandworker $PG Exit=0 par_sqlandworker $PG Exit=0 par_sqlandworker $PG command | v1 | v2 | stdout | stderr @@ -1011,7 +1011,7 @@ par_sqlandworker $PG sleep .3;echo 5 e | 5 | e | 5 e +| par_sqlandworker $PG | | | | par_sqlandworker $PG (25 rows) par_sqlandworker $PG -par_sqlandworker $SQLITE p_wrapper par_sqlandworker \$SQLITE +par_sqlandworker $SQLITE p_wrapper par_sqlandworker '$SQLITE' par_sqlandworker $SQLITE Exit=0 par_sqlandworker $SQLITE Exit=0 par_sqlandworker $SQLITE Command|V1|V2|Stdout|Stderr @@ -1065,7 +1065,7 @@ par_sqlandworker $SQLITE sleep .3;echo 5 d|5|d|5 d par_sqlandworker $SQLITE | par_sqlandworker $SQLITE sleep .3;echo 5 e|5|e|5 e par_sqlandworker $SQLITE | -par_sqlandworker_lo $MYSQL p_wrapper par_sqlandworker_lo \$MYSQL +par_sqlandworker_lo $MYSQL p_wrapper par_sqlandworker_lo '$MYSQL' par_sqlandworker_lo $MYSQL Exit=0 par_sqlandworker_lo $MYSQL Exit=0 par_sqlandworker_lo $MYSQL Command V1 V2 Stdout Stderr @@ -1094,7 +1094,7 @@ par_sqlandworker_lo $MYSQL sleep .3;echo 5 b 5 b 5 b\n par_sqlandworker_lo $MYSQL sleep .3;echo 5 c 5 c 5 c\n par_sqlandworker_lo $MYSQL sleep .3;echo 5 d 5 d 5 d\n par_sqlandworker_lo $MYSQL sleep .3;echo 5 e 5 e 5 e\n -par_sqlandworker_lo $PG p_wrapper par_sqlandworker_lo \$PG +par_sqlandworker_lo $PG p_wrapper par_sqlandworker_lo '$PG' par_sqlandworker_lo $PG Exit=0 par_sqlandworker_lo $PG Exit=0 par_sqlandworker_lo $PG command | v1 | v2 | stdout | stderr @@ -1151,7 +1151,7 @@ par_sqlandworker_lo $PG sleep .3;echo 5 e | 5 | e | 5 e +| par_sqlandworker_lo $PG | | | | par_sqlandworker_lo $PG (25 rows) par_sqlandworker_lo $PG -par_sqlandworker_lo $SQLITE p_wrapper par_sqlandworker_lo \$SQLITE +par_sqlandworker_lo $SQLITE p_wrapper par_sqlandworker_lo '$SQLITE' par_sqlandworker_lo $SQLITE Exit=0 par_sqlandworker_lo $SQLITE Exit=0 par_sqlandworker_lo $SQLITE Command|V1|V2|Stdout|Stderr @@ -1205,7 +1205,7 @@ par_sqlandworker_lo $SQLITE sleep .3;echo 5 d|5|d|5 d par_sqlandworker_lo $SQLITE | par_sqlandworker_lo $SQLITE sleep .3;echo 5 e|5|e|5 e par_sqlandworker_lo $SQLITE | -par_sqlandworker_results $MYSQL p_wrapper par_sqlandworker_results \$MYSQL +par_sqlandworker_results $MYSQL p_wrapper par_sqlandworker_results '$MYSQL' par_sqlandworker_results $MYSQL Exit=0 par_sqlandworker_results $MYSQL Exit=0 par_sqlandworker_results $MYSQL Command V1 V2 Stdout Stderr @@ -1234,7 +1234,7 @@ par_sqlandworker_results $MYSQL sleep .3;echo 5 b 5 b /tmp/out--sql/1/5/2/b/stdo par_sqlandworker_results $MYSQL sleep .3;echo 5 c 5 c /tmp/out--sql/1/5/2/c/stdout /tmp/out--sql/1/5/2/c/stderr par_sqlandworker_results $MYSQL sleep .3;echo 5 d 5 d /tmp/out--sql/1/5/2/d/stdout /tmp/out--sql/1/5/2/d/stderr par_sqlandworker_results $MYSQL sleep .3;echo 5 e 5 e /tmp/out--sql/1/5/2/e/stdout /tmp/out--sql/1/5/2/e/stderr -par_sqlandworker_results $PG p_wrapper par_sqlandworker_results \$PG +par_sqlandworker_results $PG p_wrapper par_sqlandworker_results '$PG' par_sqlandworker_results $PG Exit=0 par_sqlandworker_results $PG Exit=0 par_sqlandworker_results $PG command | v1 | v2 | stdout | stderr @@ -1266,7 +1266,7 @@ par_sqlandworker_results $PG sleep .3;echo 5 d | 5 | d | /tmp/out--sql/1/5/2/ par_sqlandworker_results $PG sleep .3;echo 5 e | 5 | e | /tmp/out--sql/1/5/2/e/stdout | /tmp/out--sql/1/5/2/e/stderr par_sqlandworker_results $PG (25 rows) par_sqlandworker_results $PG -par_sqlandworker_results $SQLITE p_wrapper par_sqlandworker_results \$SQLITE +par_sqlandworker_results $SQLITE p_wrapper par_sqlandworker_results '$SQLITE' par_sqlandworker_results $SQLITE Exit=0 par_sqlandworker_results $SQLITE Exit=0 par_sqlandworker_results $SQLITE Command|V1|V2|Stdout|Stderr @@ -1295,7 +1295,7 @@ par_sqlandworker_results $SQLITE sleep .3;echo 5 b|5|b|/tmp/out--sql/1/5/2/b/std par_sqlandworker_results $SQLITE sleep .3;echo 5 c|5|c|/tmp/out--sql/1/5/2/c/stdout|/tmp/out--sql/1/5/2/c/stderr par_sqlandworker_results $SQLITE sleep .3;echo 5 d|5|d|/tmp/out--sql/1/5/2/d/stdout|/tmp/out--sql/1/5/2/d/stderr par_sqlandworker_results $SQLITE sleep .3;echo 5 e|5|e|/tmp/out--sql/1/5/2/e/stdout|/tmp/out--sql/1/5/2/e/stderr -par_sqlandworker_tag $MYSQL p_wrapper par_sqlandworker_tag \$MYSQL +par_sqlandworker_tag $MYSQL p_wrapper par_sqlandworker_tag '$MYSQL' par_sqlandworker_tag $MYSQL Exit=0 par_sqlandworker_tag $MYSQL Exit=0 par_sqlandworker_tag $MYSQL Command V1 V2 Stdout Stderr @@ -1324,7 +1324,7 @@ par_sqlandworker_tag $MYSQL sleep .3;echo 5 b 5 b 5 b\t5 b\n par_sqlandworker_tag $MYSQL sleep .3;echo 5 c 5 c 5 c\t5 c\n par_sqlandworker_tag $MYSQL sleep .3;echo 5 d 5 d 5 d\t5 d\n par_sqlandworker_tag $MYSQL sleep .3;echo 5 e 5 e 5 e\t5 e\n -par_sqlandworker_tag $PG p_wrapper par_sqlandworker_tag \$PG +par_sqlandworker_tag $PG p_wrapper par_sqlandworker_tag '$PG' par_sqlandworker_tag $PG Exit=0 par_sqlandworker_tag $PG Exit=0 par_sqlandworker_tag $PG command | v1 | v2 | stdout | stderr @@ -1381,7 +1381,7 @@ par_sqlandworker_tag $PG sleep .3;echo 5 e | 5 | e | 5 e 5 e+| par_sqlandworker_tag $PG | | | | par_sqlandworker_tag $PG (25 rows) par_sqlandworker_tag $PG -par_sqlandworker_tag $SQLITE p_wrapper par_sqlandworker_tag \$SQLITE +par_sqlandworker_tag $SQLITE p_wrapper par_sqlandworker_tag '$SQLITE' par_sqlandworker_tag $SQLITE Exit=0 par_sqlandworker_tag $SQLITE Exit=0 par_sqlandworker_tag $SQLITE Command|V1|V2|Stdout|Stderr @@ -1435,7 +1435,7 @@ par_sqlandworker_tag $SQLITE sleep .3;echo 5 d|5|d|5 d 5 d par_sqlandworker_tag $SQLITE | par_sqlandworker_tag $SQLITE sleep .3;echo 5 e|5|e|5 e 5 e par_sqlandworker_tag $SQLITE | -par_sqlandworker_total_jobs $MYSQL p_wrapper par_sqlandworker_total_jobs \$MYSQL +par_sqlandworker_total_jobs $MYSQL p_wrapper par_sqlandworker_total_jobs '$MYSQL' par_sqlandworker_total_jobs $MYSQL Exit=0 par_sqlandworker_total_jobs $MYSQL Exit=0 par_sqlandworker_total_jobs $MYSQL Command V1 V2 Stdout Stderr @@ -1464,7 +1464,7 @@ par_sqlandworker_total_jobs $MYSQL echo 22 of 25; sleep .3;echo 5 b 22 of 25\n\n par_sqlandworker_total_jobs $MYSQL echo 23 of 25; sleep .3;echo 5 c 23 of 25\n\n par_sqlandworker_total_jobs $MYSQL echo 24 of 25; sleep .3;echo 5 d 24 of 25\n\n par_sqlandworker_total_jobs $MYSQL echo 25 of 25; sleep .3;echo 5 e 25 of 25\n\n -par_sqlandworker_total_jobs $PG p_wrapper par_sqlandworker_total_jobs \$PG +par_sqlandworker_total_jobs $PG p_wrapper par_sqlandworker_total_jobs '$PG' par_sqlandworker_total_jobs $PG Exit=0 par_sqlandworker_total_jobs $PG Exit=0 par_sqlandworker_total_jobs $PG command | v1 | v2 | stdout | stderr @@ -1546,7 +1546,7 @@ par_sqlandworker_total_jobs $PG | | | par_sqlandworker_total_jobs $PG | | | | par_sqlandworker_total_jobs $PG (25 rows) par_sqlandworker_total_jobs $PG -par_sqlandworker_total_jobs $SQLITE p_wrapper par_sqlandworker_total_jobs \$SQLITE +par_sqlandworker_total_jobs $SQLITE p_wrapper par_sqlandworker_total_jobs '$SQLITE' par_sqlandworker_total_jobs $SQLITE Exit=0 par_sqlandworker_total_jobs $SQLITE Exit=0 par_sqlandworker_total_jobs $SQLITE Command|V1|V2|Stdout|Stderr @@ -1625,7 +1625,7 @@ par_sqlandworker_total_jobs $SQLITE | par_sqlandworker_total_jobs $SQLITE echo 25 of 25; sleep .3;echo|5|e|25 of 25 par_sqlandworker_total_jobs $SQLITE par_sqlandworker_total_jobs $SQLITE | -par_sqlandworker_unbuffer $MYSQL p_wrapper par_sqlandworker_unbuffer \$MYSQL +par_sqlandworker_unbuffer $MYSQL p_wrapper par_sqlandworker_unbuffer '$MYSQL' par_sqlandworker_unbuffer $MYSQL Exit=0 par_sqlandworker_unbuffer $MYSQL Exit=0 par_sqlandworker_unbuffer $MYSQL Command V1 V2 Stdout Stderr @@ -1654,7 +1654,7 @@ par_sqlandworker_unbuffer $MYSQL sleep .3;echo 5 b 5 b par_sqlandworker_unbuffer $MYSQL sleep .3;echo 5 c 5 c par_sqlandworker_unbuffer $MYSQL sleep .3;echo 5 d 5 d par_sqlandworker_unbuffer $MYSQL sleep .3;echo 5 e 5 e -par_sqlandworker_unbuffer $PG p_wrapper par_sqlandworker_unbuffer \$PG +par_sqlandworker_unbuffer $PG p_wrapper par_sqlandworker_unbuffer '$PG' par_sqlandworker_unbuffer $PG Exit=0 par_sqlandworker_unbuffer $PG Exit=0 par_sqlandworker_unbuffer $PG command | v1 | v2 | stdout | stderr @@ -1686,7 +1686,7 @@ par_sqlandworker_unbuffer $PG sleep .3;echo 5 d | 5 | d | | par_sqlandworker_unbuffer $PG sleep .3;echo 5 e | 5 | e | | par_sqlandworker_unbuffer $PG (25 rows) par_sqlandworker_unbuffer $PG -par_sqlandworker_unbuffer $SQLITE p_wrapper par_sqlandworker_unbuffer \$SQLITE +par_sqlandworker_unbuffer $SQLITE p_wrapper par_sqlandworker_unbuffer '$SQLITE' par_sqlandworker_unbuffer $SQLITE Exit=0 par_sqlandworker_unbuffer $SQLITE Exit=0 par_sqlandworker_unbuffer $SQLITE Command|V1|V2|Stdout|Stderr diff --git a/testsuite/wanted-results/parallel-local-sql01 b/testsuite/wanted-results/parallel-local-sql01 index c1faa8eb..4ebf4c7b 100644 --- a/testsuite/wanted-results/parallel-local-sql01 +++ b/testsuite/wanted-results/parallel-local-sql01 @@ -1,6 +1,1657 @@ -par_empty $MYSQL p_wrapper par_empty \$MYSQL -par_empty $MYSQL /bin/bash: p_wrapper: command not found -par_empty $PG p_wrapper par_empty \$PG -par_empty $PG /bin/bash: p_wrapper: command not found -par_empty $SQLITE p_wrapper par_empty \$SQLITE -par_empty $SQLITE /bin/bash: p_wrapper: command not found +par_append $MYSQL p_wrapper par_append '$MYSQL' +par_append $MYSQL Exit=0 +par_append $MYSQL Exit=0 +par_append $MYSQL Host Command V1 V2 Stdout Stderr +par_append $MYSQL hk sleep .3;echo 1 a 1 a 1 a\n +par_append $MYSQL hk sleep .3;echo 1 b 1 b 1 b\n +par_append $MYSQL hk sleep .3;echo 1 c 1 c 1 c\n +par_append $MYSQL hk sleep .3;echo 1 d 1 d 1 d\n +par_append $MYSQL hk sleep .3;echo 1 e 1 e 1 e\n +par_append $MYSQL hk sleep .3;echo 2 a 2 a 2 a\n +par_append $MYSQL hk sleep .3;echo 2 b 2 b 2 b\n +par_append $MYSQL hk sleep .3;echo 2 c 2 c 2 c\n +par_append $MYSQL hk sleep .3;echo 2 d 2 d 2 d\n +par_append $MYSQL hk sleep .3;echo 2 e 2 e 2 e\n +par_append $MYSQL hk sleep .3;echo 3 a 3 a 3 a\n +par_append $MYSQL hk sleep .3;echo 3 b 3 b 3 b\n +par_append $MYSQL hk sleep .3;echo 3 c 3 c 3 c\n +par_append $MYSQL hk sleep .3;echo 3 d 3 d 3 d\n +par_append $MYSQL hk sleep .3;echo 3 e 3 e 3 e\n +par_append $MYSQL hk sleep .3;echo 4 a 4 a 4 a\n +par_append $MYSQL hk sleep .3;echo 4 b 4 b 4 b\n +par_append $MYSQL hk sleep .3;echo 4 c 4 c 4 c\n +par_append $MYSQL hk sleep .3;echo 4 d 4 d 4 d\n +par_append $MYSQL hk sleep .3;echo 4 e 4 e 4 e\n +par_append $MYSQL hk sleep .3;echo 5 a 5 a 5 a\n +par_append $MYSQL hk sleep .3;echo 5 b 5 b 5 b\n +par_append $MYSQL hk sleep .3;echo 5 c 5 c 5 c\n +par_append $MYSQL hk sleep .3;echo 5 d 5 d 5 d\n +par_append $MYSQL hk sleep .3;echo 5 e 5 e 5 e\n +par_append $MYSQL hk sleep .3;echo 11 A 11 A 11 A\n +par_append $MYSQL hk sleep .3;echo 11 B 11 B 11 B\n +par_append $MYSQL hk sleep .3;echo 11 C 11 C 11 C\n +par_append $MYSQL hk sleep .3;echo 11 D 11 D 11 D\n +par_append $MYSQL hk sleep .3;echo 11 E 11 E 11 E\n +par_append $MYSQL hk sleep .3;echo 12 A 12 A 12 A\n +par_append $MYSQL hk sleep .3;echo 12 B 12 B 12 B\n +par_append $MYSQL hk sleep .3;echo 12 C 12 C 12 C\n +par_append $MYSQL hk sleep .3;echo 12 D 12 D 12 D\n +par_append $MYSQL hk sleep .3;echo 12 E 12 E 12 E\n +par_append $MYSQL hk sleep .3;echo 13 A 13 A 13 A\n +par_append $MYSQL hk sleep .3;echo 13 B 13 B 13 B\n +par_append $MYSQL hk sleep .3;echo 13 C 13 C 13 C\n +par_append $MYSQL hk sleep .3;echo 13 D 13 D 13 D\n +par_append $MYSQL hk sleep .3;echo 13 E 13 E 13 E\n +par_append $MYSQL hk sleep .3;echo 14 A 14 A 14 A\n +par_append $MYSQL hk sleep .3;echo 14 B 14 B 14 B\n +par_append $MYSQL hk sleep .3;echo 14 C 14 C 14 C\n +par_append $MYSQL hk sleep .3;echo 14 D 14 D 14 D\n +par_append $MYSQL hk sleep .3;echo 14 E 14 E 14 E\n +par_append $MYSQL hk sleep .3;echo 15 A 15 A 15 A\n +par_append $MYSQL hk sleep .3;echo 15 B 15 B 15 B\n +par_append $MYSQL hk sleep .3;echo 15 C 15 C 15 C\n +par_append $MYSQL hk sleep .3;echo 15 D 15 D 15 D\n +par_append $MYSQL hk sleep .3;echo 15 E 15 E 15 E\n +par_append $PG p_wrapper par_append '$PG' +par_append $PG Exit=0 +par_append $PG Exit=0 +par_append $PG host | command | v1 | v2 | stdout | stderr +par_append $PG ------+--------------------+----+----+--------+-------- +par_append $PG hk | sleep .3;echo 1 a | 1 | a | 1 a +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 1 b | 1 | b | 1 b +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 1 c | 1 | c | 1 c +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 1 d | 1 | d | 1 d +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 1 e | 1 | e | 1 e +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 2 a | 2 | a | 2 a +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 2 b | 2 | b | 2 b +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 2 c | 2 | c | 2 c +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 2 d | 2 | d | 2 d +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 2 e | 2 | e | 2 e +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 3 a | 3 | a | 3 a +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 3 b | 3 | b | 3 b +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 3 c | 3 | c | 3 c +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 3 d | 3 | d | 3 d +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 3 e | 3 | e | 3 e +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 4 a | 4 | a | 4 a +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 4 b | 4 | b | 4 b +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 4 c | 4 | c | 4 c +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 4 d | 4 | d | 4 d +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 4 e | 4 | e | 4 e +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 5 a | 5 | a | 5 a +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 5 b | 5 | b | 5 b +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 5 c | 5 | c | 5 c +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 5 d | 5 | d | 5 d +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 5 e | 5 | e | 5 e +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 11 A | 11 | A | 11 A +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 11 B | 11 | B | 11 B +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 11 C | 11 | C | 11 C +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 11 D | 11 | D | 11 D +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 11 E | 11 | E | 11 E +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 12 A | 12 | A | 12 A +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 12 B | 12 | B | 12 B +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 12 C | 12 | C | 12 C +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 12 D | 12 | D | 12 D +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 12 E | 12 | E | 12 E +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 13 A | 13 | A | 13 A +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 13 B | 13 | B | 13 B +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 13 C | 13 | C | 13 C +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 13 D | 13 | D | 13 D +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 13 E | 13 | E | 13 E +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 14 A | 14 | A | 14 A +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 14 B | 14 | B | 14 B +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 14 C | 14 | C | 14 C +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 14 D | 14 | D | 14 D +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 14 E | 14 | E | 14 E +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 15 A | 15 | A | 15 A +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 15 B | 15 | B | 15 B +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 15 C | 15 | C | 15 C +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 15 D | 15 | D | 15 D +| +par_append $PG | | | | | +par_append $PG hk | sleep .3;echo 15 E | 15 | E | 15 E +| +par_append $PG | | | | | +par_append $PG (50 rows) +par_append $PG +par_append $SQLITE p_wrapper par_append '$SQLITE' +par_append $SQLITE Exit=0 +par_append $SQLITE Exit=0 +par_append $SQLITE Host|Command|V1|V2|Stdout|Stderr +par_append $SQLITE hk|sleep .3;echo 1 a|1|a|1 a +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 1 b|1|b|1 b +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 1 c|1|c|1 c +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 1 d|1|d|1 d +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 1 e|1|e|1 e +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 2 a|2|a|2 a +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 2 b|2|b|2 b +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 2 c|2|c|2 c +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 2 d|2|d|2 d +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 2 e|2|e|2 e +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 3 a|3|a|3 a +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 3 b|3|b|3 b +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 3 c|3|c|3 c +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 3 d|3|d|3 d +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 3 e|3|e|3 e +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 4 a|4|a|4 a +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 4 b|4|b|4 b +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 4 c|4|c|4 c +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 4 d|4|d|4 d +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 4 e|4|e|4 e +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 5 a|5|a|5 a +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 5 b|5|b|5 b +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 5 c|5|c|5 c +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 5 d|5|d|5 d +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 5 e|5|e|5 e +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 11 A|11|A|11 A +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 11 B|11|B|11 B +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 11 C|11|C|11 C +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 11 D|11|D|11 D +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 11 E|11|E|11 E +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 12 A|12|A|12 A +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 12 B|12|B|12 B +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 12 C|12|C|12 C +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 12 D|12|D|12 D +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 12 E|12|E|12 E +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 13 A|13|A|13 A +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 13 B|13|B|13 B +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 13 C|13|C|13 C +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 13 D|13|D|13 D +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 13 E|13|E|13 E +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 14 A|14|A|14 A +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 14 B|14|B|14 B +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 14 C|14|C|14 C +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 14 D|14|D|14 D +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 14 E|14|E|14 E +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 15 A|15|A|15 A +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 15 B|15|B|15 B +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 15 C|15|C|15 C +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 15 D|15|D|15 D +par_append $SQLITE | +par_append $SQLITE hk|sleep .3;echo 15 E|15|E|15 E +par_append $SQLITE | +par_empty $MYSQL p_wrapper par_empty '$MYSQL' +par_empty $MYSQL Exit=0 +par_empty $MYSQL Exit=0 +par_empty $MYSQL ERROR 1146 (42S02) at line 1: Table 'tange.TBL99999' doesn't exist +par_empty $PG p_wrapper par_empty '$PG' +par_empty $PG Exit=0 +par_empty $PG Exit=0 +par_empty $PG ERROR: relation "TBL99999" does not exist +par_empty $PG LINE 1: select Host,Command,V1,V2,Stdout,Stderr from TBL99999 order ... +par_empty $PG ^ +par_empty $SQLITE p_wrapper par_empty '$SQLITE' +par_empty $SQLITE Exit=0 +par_empty $SQLITE Exit=0 +par_empty $SQLITE Error: near line 1: no such table: TBL99999 +par_shuf $MYSQL p_wrapper par_shuf '$MYSQL' +par_shuf $MYSQL 1 a +par_shuf $MYSQL 1 b +par_shuf $MYSQL 1 c +par_shuf $MYSQL 1 d +par_shuf $MYSQL 1 e +par_shuf $MYSQL 2 a +par_shuf $MYSQL 2 b +par_shuf $MYSQL 2 c +par_shuf $MYSQL 2 d +par_shuf $MYSQL 2 e +par_shuf $MYSQL 3 a +par_shuf $MYSQL 3 b +par_shuf $MYSQL 3 c +par_shuf $MYSQL 3 d +par_shuf $MYSQL 3 e +par_shuf $MYSQL 4 a +par_shuf $MYSQL 4 b +par_shuf $MYSQL 4 c +par_shuf $MYSQL 4 d +par_shuf $MYSQL 4 e +par_shuf $MYSQL 5 a +par_shuf $MYSQL 5 b +par_shuf $MYSQL 5 c +par_shuf $MYSQL 5 d +par_shuf $MYSQL 5 e +par_shuf $MYSQL OK: Diff bigger than 2500 char +par_shuf $MYSQL Exit=0 +par_shuf $MYSQL Exit=0 +par_shuf $MYSQL Host Command V1 V2 Stdout Stderr +par_shuf $MYSQL hk sleep .3;echo 1 a 1 a /tmp/parallel-bug49791-c20/1/1/2/a/stdout /tmp/parallel-bug49791-c20/1/1/2/a/stderr +par_shuf $MYSQL hk sleep .3;echo 1 b 1 b /tmp/parallel-bug49791-c20/1/1/2/b/stdout /tmp/parallel-bug49791-c20/1/1/2/b/stderr +par_shuf $MYSQL hk sleep .3;echo 1 c 1 c /tmp/parallel-bug49791-c20/1/1/2/c/stdout /tmp/parallel-bug49791-c20/1/1/2/c/stderr +par_shuf $MYSQL hk sleep .3;echo 1 d 1 d /tmp/parallel-bug49791-c20/1/1/2/d/stdout /tmp/parallel-bug49791-c20/1/1/2/d/stderr +par_shuf $MYSQL hk sleep .3;echo 1 e 1 e /tmp/parallel-bug49791-c20/1/1/2/e/stdout /tmp/parallel-bug49791-c20/1/1/2/e/stderr +par_shuf $MYSQL hk sleep .3;echo 2 a 2 a /tmp/parallel-bug49791-c20/1/2/2/a/stdout /tmp/parallel-bug49791-c20/1/2/2/a/stderr +par_shuf $MYSQL hk sleep .3;echo 2 b 2 b /tmp/parallel-bug49791-c20/1/2/2/b/stdout /tmp/parallel-bug49791-c20/1/2/2/b/stderr +par_shuf $MYSQL hk sleep .3;echo 2 c 2 c /tmp/parallel-bug49791-c20/1/2/2/c/stdout /tmp/parallel-bug49791-c20/1/2/2/c/stderr +par_shuf $MYSQL hk sleep .3;echo 2 d 2 d /tmp/parallel-bug49791-c20/1/2/2/d/stdout /tmp/parallel-bug49791-c20/1/2/2/d/stderr +par_shuf $MYSQL hk sleep .3;echo 2 e 2 e /tmp/parallel-bug49791-c20/1/2/2/e/stdout /tmp/parallel-bug49791-c20/1/2/2/e/stderr +par_shuf $MYSQL hk sleep .3;echo 3 a 3 a /tmp/parallel-bug49791-c20/1/3/2/a/stdout /tmp/parallel-bug49791-c20/1/3/2/a/stderr +par_shuf $MYSQL hk sleep .3;echo 3 b 3 b /tmp/parallel-bug49791-c20/1/3/2/b/stdout /tmp/parallel-bug49791-c20/1/3/2/b/stderr +par_shuf $MYSQL hk sleep .3;echo 3 c 3 c /tmp/parallel-bug49791-c20/1/3/2/c/stdout /tmp/parallel-bug49791-c20/1/3/2/c/stderr +par_shuf $MYSQL hk sleep .3;echo 3 d 3 d /tmp/parallel-bug49791-c20/1/3/2/d/stdout /tmp/parallel-bug49791-c20/1/3/2/d/stderr +par_shuf $MYSQL hk sleep .3;echo 3 e 3 e /tmp/parallel-bug49791-c20/1/3/2/e/stdout /tmp/parallel-bug49791-c20/1/3/2/e/stderr +par_shuf $MYSQL hk sleep .3;echo 4 a 4 a /tmp/parallel-bug49791-c20/1/4/2/a/stdout /tmp/parallel-bug49791-c20/1/4/2/a/stderr +par_shuf $MYSQL hk sleep .3;echo 4 b 4 b /tmp/parallel-bug49791-c20/1/4/2/b/stdout /tmp/parallel-bug49791-c20/1/4/2/b/stderr +par_shuf $MYSQL hk sleep .3;echo 4 c 4 c /tmp/parallel-bug49791-c20/1/4/2/c/stdout /tmp/parallel-bug49791-c20/1/4/2/c/stderr +par_shuf $MYSQL hk sleep .3;echo 4 d 4 d /tmp/parallel-bug49791-c20/1/4/2/d/stdout /tmp/parallel-bug49791-c20/1/4/2/d/stderr +par_shuf $MYSQL hk sleep .3;echo 4 e 4 e /tmp/parallel-bug49791-c20/1/4/2/e/stdout /tmp/parallel-bug49791-c20/1/4/2/e/stderr +par_shuf $MYSQL hk sleep .3;echo 5 a 5 a /tmp/parallel-bug49791-c20/1/5/2/a/stdout /tmp/parallel-bug49791-c20/1/5/2/a/stderr +par_shuf $MYSQL hk sleep .3;echo 5 b 5 b /tmp/parallel-bug49791-c20/1/5/2/b/stdout /tmp/parallel-bug49791-c20/1/5/2/b/stderr +par_shuf $MYSQL hk sleep .3;echo 5 c 5 c /tmp/parallel-bug49791-c20/1/5/2/c/stdout /tmp/parallel-bug49791-c20/1/5/2/c/stderr +par_shuf $MYSQL hk sleep .3;echo 5 d 5 d /tmp/parallel-bug49791-c20/1/5/2/d/stdout /tmp/parallel-bug49791-c20/1/5/2/d/stderr +par_shuf $MYSQL hk sleep .3;echo 5 e 5 e /tmp/parallel-bug49791-c20/1/5/2/e/stdout /tmp/parallel-bug49791-c20/1/5/2/e/stderr +par_shuf $PG p_wrapper par_shuf '$PG' +par_shuf $PG 1 a +par_shuf $PG 1 b +par_shuf $PG 1 c +par_shuf $PG 1 d +par_shuf $PG 1 e +par_shuf $PG 2 a +par_shuf $PG 2 b +par_shuf $PG 2 c +par_shuf $PG 2 d +par_shuf $PG 2 e +par_shuf $PG 3 a +par_shuf $PG 3 b +par_shuf $PG 3 c +par_shuf $PG 3 d +par_shuf $PG 3 e +par_shuf $PG 4 a +par_shuf $PG 4 b +par_shuf $PG 4 c +par_shuf $PG 4 d +par_shuf $PG 4 e +par_shuf $PG 5 a +par_shuf $PG 5 b +par_shuf $PG 5 c +par_shuf $PG 5 d +par_shuf $PG 5 e +par_shuf $PG OK: Diff bigger than 2500 char +par_shuf $PG Exit=0 +par_shuf $PG Exit=0 +par_shuf $PG host | command | v1 | v2 | stdout | stderr +par_shuf $PG ------+-------------------+----+----+-------------------------------------------+------------------------------------------- +par_shuf $PG hk | sleep .3;echo 1 a | 1 | a | /tmp/parallel-bug49791-792/1/1/2/a/stdout | /tmp/parallel-bug49791-792/1/1/2/a/stderr +par_shuf $PG hk | sleep .3;echo 1 b | 1 | b | /tmp/parallel-bug49791-792/1/1/2/b/stdout | /tmp/parallel-bug49791-792/1/1/2/b/stderr +par_shuf $PG hk | sleep .3;echo 1 c | 1 | c | /tmp/parallel-bug49791-792/1/1/2/c/stdout | /tmp/parallel-bug49791-792/1/1/2/c/stderr +par_shuf $PG hk | sleep .3;echo 1 d | 1 | d | /tmp/parallel-bug49791-792/1/1/2/d/stdout | /tmp/parallel-bug49791-792/1/1/2/d/stderr +par_shuf $PG hk | sleep .3;echo 1 e | 1 | e | /tmp/parallel-bug49791-792/1/1/2/e/stdout | /tmp/parallel-bug49791-792/1/1/2/e/stderr +par_shuf $PG hk | sleep .3;echo 2 a | 2 | a | /tmp/parallel-bug49791-792/1/2/2/a/stdout | /tmp/parallel-bug49791-792/1/2/2/a/stderr +par_shuf $PG hk | sleep .3;echo 2 b | 2 | b | /tmp/parallel-bug49791-792/1/2/2/b/stdout | /tmp/parallel-bug49791-792/1/2/2/b/stderr +par_shuf $PG hk | sleep .3;echo 2 c | 2 | c | /tmp/parallel-bug49791-792/1/2/2/c/stdout | /tmp/parallel-bug49791-792/1/2/2/c/stderr +par_shuf $PG hk | sleep .3;echo 2 d | 2 | d | /tmp/parallel-bug49791-792/1/2/2/d/stdout | /tmp/parallel-bug49791-792/1/2/2/d/stderr +par_shuf $PG hk | sleep .3;echo 2 e | 2 | e | /tmp/parallel-bug49791-792/1/2/2/e/stdout | /tmp/parallel-bug49791-792/1/2/2/e/stderr +par_shuf $PG hk | sleep .3;echo 3 a | 3 | a | /tmp/parallel-bug49791-792/1/3/2/a/stdout | /tmp/parallel-bug49791-792/1/3/2/a/stderr +par_shuf $PG hk | sleep .3;echo 3 b | 3 | b | /tmp/parallel-bug49791-792/1/3/2/b/stdout | /tmp/parallel-bug49791-792/1/3/2/b/stderr +par_shuf $PG hk | sleep .3;echo 3 c | 3 | c | /tmp/parallel-bug49791-792/1/3/2/c/stdout | /tmp/parallel-bug49791-792/1/3/2/c/stderr +par_shuf $PG hk | sleep .3;echo 3 d | 3 | d | /tmp/parallel-bug49791-792/1/3/2/d/stdout | /tmp/parallel-bug49791-792/1/3/2/d/stderr +par_shuf $PG hk | sleep .3;echo 3 e | 3 | e | /tmp/parallel-bug49791-792/1/3/2/e/stdout | /tmp/parallel-bug49791-792/1/3/2/e/stderr +par_shuf $PG hk | sleep .3;echo 4 a | 4 | a | /tmp/parallel-bug49791-792/1/4/2/a/stdout | /tmp/parallel-bug49791-792/1/4/2/a/stderr +par_shuf $PG hk | sleep .3;echo 4 b | 4 | b | /tmp/parallel-bug49791-792/1/4/2/b/stdout | /tmp/parallel-bug49791-792/1/4/2/b/stderr +par_shuf $PG hk | sleep .3;echo 4 c | 4 | c | /tmp/parallel-bug49791-792/1/4/2/c/stdout | /tmp/parallel-bug49791-792/1/4/2/c/stderr +par_shuf $PG hk | sleep .3;echo 4 d | 4 | d | /tmp/parallel-bug49791-792/1/4/2/d/stdout | /tmp/parallel-bug49791-792/1/4/2/d/stderr +par_shuf $PG hk | sleep .3;echo 4 e | 4 | e | /tmp/parallel-bug49791-792/1/4/2/e/stdout | /tmp/parallel-bug49791-792/1/4/2/e/stderr +par_shuf $PG hk | sleep .3;echo 5 a | 5 | a | /tmp/parallel-bug49791-792/1/5/2/a/stdout | /tmp/parallel-bug49791-792/1/5/2/a/stderr +par_shuf $PG hk | sleep .3;echo 5 b | 5 | b | /tmp/parallel-bug49791-792/1/5/2/b/stdout | /tmp/parallel-bug49791-792/1/5/2/b/stderr +par_shuf $PG hk | sleep .3;echo 5 c | 5 | c | /tmp/parallel-bug49791-792/1/5/2/c/stdout | /tmp/parallel-bug49791-792/1/5/2/c/stderr +par_shuf $PG hk | sleep .3;echo 5 d | 5 | d | /tmp/parallel-bug49791-792/1/5/2/d/stdout | /tmp/parallel-bug49791-792/1/5/2/d/stderr +par_shuf $PG hk | sleep .3;echo 5 e | 5 | e | /tmp/parallel-bug49791-792/1/5/2/e/stdout | /tmp/parallel-bug49791-792/1/5/2/e/stderr +par_shuf $PG (25 rows) +par_shuf $PG +par_shuf $SQLITE p_wrapper par_shuf '$SQLITE' +par_shuf $SQLITE 1 a +par_shuf $SQLITE 1 b +par_shuf $SQLITE 1 c +par_shuf $SQLITE 1 d +par_shuf $SQLITE 1 e +par_shuf $SQLITE 2 a +par_shuf $SQLITE 2 b +par_shuf $SQLITE 2 c +par_shuf $SQLITE 2 d +par_shuf $SQLITE 2 e +par_shuf $SQLITE 3 a +par_shuf $SQLITE 3 b +par_shuf $SQLITE 3 c +par_shuf $SQLITE 3 d +par_shuf $SQLITE 3 e +par_shuf $SQLITE 4 a +par_shuf $SQLITE 4 b +par_shuf $SQLITE 4 c +par_shuf $SQLITE 4 d +par_shuf $SQLITE 4 e +par_shuf $SQLITE 5 a +par_shuf $SQLITE 5 b +par_shuf $SQLITE 5 c +par_shuf $SQLITE 5 d +par_shuf $SQLITE 5 e +par_shuf $SQLITE OK: Diff bigger than 2500 char +par_shuf $SQLITE Exit=0 +par_shuf $SQLITE Exit=0 +par_shuf $SQLITE Host|Command|V1|V2|Stdout|Stderr +par_shuf $SQLITE hk|sleep .3;echo 1 a|1|a|/tmp/parallel-bug49791-932/1/1/2/a/stdout|/tmp/parallel-bug49791-932/1/1/2/a/stderr +par_shuf $SQLITE hk|sleep .3;echo 1 b|1|b|/tmp/parallel-bug49791-932/1/1/2/b/stdout|/tmp/parallel-bug49791-932/1/1/2/b/stderr +par_shuf $SQLITE hk|sleep .3;echo 1 c|1|c|/tmp/parallel-bug49791-932/1/1/2/c/stdout|/tmp/parallel-bug49791-932/1/1/2/c/stderr +par_shuf $SQLITE hk|sleep .3;echo 1 d|1|d|/tmp/parallel-bug49791-932/1/1/2/d/stdout|/tmp/parallel-bug49791-932/1/1/2/d/stderr +par_shuf $SQLITE hk|sleep .3;echo 1 e|1|e|/tmp/parallel-bug49791-932/1/1/2/e/stdout|/tmp/parallel-bug49791-932/1/1/2/e/stderr +par_shuf $SQLITE hk|sleep .3;echo 2 a|2|a|/tmp/parallel-bug49791-932/1/2/2/a/stdout|/tmp/parallel-bug49791-932/1/2/2/a/stderr +par_shuf $SQLITE hk|sleep .3;echo 2 b|2|b|/tmp/parallel-bug49791-932/1/2/2/b/stdout|/tmp/parallel-bug49791-932/1/2/2/b/stderr +par_shuf $SQLITE hk|sleep .3;echo 2 c|2|c|/tmp/parallel-bug49791-932/1/2/2/c/stdout|/tmp/parallel-bug49791-932/1/2/2/c/stderr +par_shuf $SQLITE hk|sleep .3;echo 2 d|2|d|/tmp/parallel-bug49791-932/1/2/2/d/stdout|/tmp/parallel-bug49791-932/1/2/2/d/stderr +par_shuf $SQLITE hk|sleep .3;echo 2 e|2|e|/tmp/parallel-bug49791-932/1/2/2/e/stdout|/tmp/parallel-bug49791-932/1/2/2/e/stderr +par_shuf $SQLITE hk|sleep .3;echo 3 a|3|a|/tmp/parallel-bug49791-932/1/3/2/a/stdout|/tmp/parallel-bug49791-932/1/3/2/a/stderr +par_shuf $SQLITE hk|sleep .3;echo 3 b|3|b|/tmp/parallel-bug49791-932/1/3/2/b/stdout|/tmp/parallel-bug49791-932/1/3/2/b/stderr +par_shuf $SQLITE hk|sleep .3;echo 3 c|3|c|/tmp/parallel-bug49791-932/1/3/2/c/stdout|/tmp/parallel-bug49791-932/1/3/2/c/stderr +par_shuf $SQLITE hk|sleep .3;echo 3 d|3|d|/tmp/parallel-bug49791-932/1/3/2/d/stdout|/tmp/parallel-bug49791-932/1/3/2/d/stderr +par_shuf $SQLITE hk|sleep .3;echo 3 e|3|e|/tmp/parallel-bug49791-932/1/3/2/e/stdout|/tmp/parallel-bug49791-932/1/3/2/e/stderr +par_shuf $SQLITE hk|sleep .3;echo 4 a|4|a|/tmp/parallel-bug49791-932/1/4/2/a/stdout|/tmp/parallel-bug49791-932/1/4/2/a/stderr +par_shuf $SQLITE hk|sleep .3;echo 4 b|4|b|/tmp/parallel-bug49791-932/1/4/2/b/stdout|/tmp/parallel-bug49791-932/1/4/2/b/stderr +par_shuf $SQLITE hk|sleep .3;echo 4 c|4|c|/tmp/parallel-bug49791-932/1/4/2/c/stdout|/tmp/parallel-bug49791-932/1/4/2/c/stderr +par_shuf $SQLITE hk|sleep .3;echo 4 d|4|d|/tmp/parallel-bug49791-932/1/4/2/d/stdout|/tmp/parallel-bug49791-932/1/4/2/d/stderr +par_shuf $SQLITE hk|sleep .3;echo 4 e|4|e|/tmp/parallel-bug49791-932/1/4/2/e/stdout|/tmp/parallel-bug49791-932/1/4/2/e/stderr +par_shuf $SQLITE hk|sleep .3;echo 5 a|5|a|/tmp/parallel-bug49791-932/1/5/2/a/stdout|/tmp/parallel-bug49791-932/1/5/2/a/stderr +par_shuf $SQLITE hk|sleep .3;echo 5 b|5|b|/tmp/parallel-bug49791-932/1/5/2/b/stdout|/tmp/parallel-bug49791-932/1/5/2/b/stderr +par_shuf $SQLITE hk|sleep .3;echo 5 c|5|c|/tmp/parallel-bug49791-932/1/5/2/c/stdout|/tmp/parallel-bug49791-932/1/5/2/c/stderr +par_shuf $SQLITE hk|sleep .3;echo 5 d|5|d|/tmp/parallel-bug49791-932/1/5/2/d/stdout|/tmp/parallel-bug49791-932/1/5/2/d/stderr +par_shuf $SQLITE hk|sleep .3;echo 5 e|5|e|/tmp/parallel-bug49791-932/1/5/2/e/stdout|/tmp/parallel-bug49791-932/1/5/2/e/stderr +par_sqlandworker $MYSQL p_wrapper par_sqlandworker '$MYSQL' +par_sqlandworker $MYSQL Exit=0 +par_sqlandworker $MYSQL Exit=0 +par_sqlandworker $MYSQL Host Command V1 V2 Stdout Stderr +par_sqlandworker $MYSQL hk sleep .3;echo 1 a 1 a 1 a\n +par_sqlandworker $MYSQL hk sleep .3;echo 1 b 1 b 1 b\n +par_sqlandworker $MYSQL hk sleep .3;echo 1 c 1 c 1 c\n +par_sqlandworker $MYSQL hk sleep .3;echo 1 d 1 d 1 d\n +par_sqlandworker $MYSQL hk sleep .3;echo 1 e 1 e 1 e\n +par_sqlandworker $MYSQL hk sleep .3;echo 2 a 2 a 2 a\n +par_sqlandworker $MYSQL hk sleep .3;echo 2 b 2 b 2 b\n +par_sqlandworker $MYSQL hk sleep .3;echo 2 c 2 c 2 c\n +par_sqlandworker $MYSQL hk sleep .3;echo 2 d 2 d 2 d\n +par_sqlandworker $MYSQL hk sleep .3;echo 2 e 2 e 2 e\n +par_sqlandworker $MYSQL hk sleep .3;echo 3 a 3 a 3 a\n +par_sqlandworker $MYSQL hk sleep .3;echo 3 b 3 b 3 b\n +par_sqlandworker $MYSQL hk sleep .3;echo 3 c 3 c 3 c\n +par_sqlandworker $MYSQL hk sleep .3;echo 3 d 3 d 3 d\n +par_sqlandworker $MYSQL hk sleep .3;echo 3 e 3 e 3 e\n +par_sqlandworker $MYSQL hk sleep .3;echo 4 a 4 a 4 a\n +par_sqlandworker $MYSQL hk sleep .3;echo 4 b 4 b 4 b\n +par_sqlandworker $MYSQL hk sleep .3;echo 4 c 4 c 4 c\n +par_sqlandworker $MYSQL hk sleep .3;echo 4 d 4 d 4 d\n +par_sqlandworker $MYSQL hk sleep .3;echo 4 e 4 e 4 e\n +par_sqlandworker $MYSQL hk sleep .3;echo 5 a 5 a 5 a\n +par_sqlandworker $MYSQL hk sleep .3;echo 5 b 5 b 5 b\n +par_sqlandworker $MYSQL hk sleep .3;echo 5 c 5 c 5 c\n +par_sqlandworker $MYSQL hk sleep .3;echo 5 d 5 d 5 d\n +par_sqlandworker $MYSQL hk sleep .3;echo 5 e 5 e 5 e\n +par_sqlandworker $PG p_wrapper par_sqlandworker '$PG' +par_sqlandworker $PG Exit=0 +par_sqlandworker $PG Exit=0 +par_sqlandworker $PG host | command | v1 | v2 | stdout | stderr +par_sqlandworker $PG ------+-------------------+----+----+--------+-------- +par_sqlandworker $PG hk | sleep .3;echo 1 a | 1 | a | 1 a +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 1 b | 1 | b | 1 b +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 1 c | 1 | c | 1 c +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 1 d | 1 | d | 1 d +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 1 e | 1 | e | 1 e +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 2 a | 2 | a | 2 a +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 2 b | 2 | b | 2 b +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 2 c | 2 | c | 2 c +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 2 d | 2 | d | 2 d +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 2 e | 2 | e | 2 e +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 3 a | 3 | a | 3 a +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 3 b | 3 | b | 3 b +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 3 c | 3 | c | 3 c +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 3 d | 3 | d | 3 d +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 3 e | 3 | e | 3 e +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 4 a | 4 | a | 4 a +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 4 b | 4 | b | 4 b +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 4 c | 4 | c | 4 c +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 4 d | 4 | d | 4 d +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 4 e | 4 | e | 4 e +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 5 a | 5 | a | 5 a +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 5 b | 5 | b | 5 b +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 5 c | 5 | c | 5 c +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 5 d | 5 | d | 5 d +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG hk | sleep .3;echo 5 e | 5 | e | 5 e +| +par_sqlandworker $PG | | | | | +par_sqlandworker $PG (25 rows) +par_sqlandworker $PG +par_sqlandworker $SQLITE p_wrapper par_sqlandworker '$SQLITE' +par_sqlandworker $SQLITE Exit=0 +par_sqlandworker $SQLITE Exit=0 +par_sqlandworker $SQLITE Host|Command|V1|V2|Stdout|Stderr +par_sqlandworker $SQLITE hk|sleep .3;echo 1 a|1|a|1 a +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 1 b|1|b|1 b +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 1 c|1|c|1 c +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 1 d|1|d|1 d +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 1 e|1|e|1 e +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 2 a|2|a|2 a +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 2 b|2|b|2 b +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 2 c|2|c|2 c +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 2 d|2|d|2 d +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 2 e|2|e|2 e +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 3 a|3|a|3 a +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 3 b|3|b|3 b +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 3 c|3|c|3 c +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 3 d|3|d|3 d +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 3 e|3|e|3 e +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 4 a|4|a|4 a +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 4 b|4|b|4 b +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 4 c|4|c|4 c +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 4 d|4|d|4 d +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 4 e|4|e|4 e +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 5 a|5|a|5 a +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 5 b|5|b|5 b +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 5 c|5|c|5 c +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 5 d|5|d|5 d +par_sqlandworker $SQLITE | +par_sqlandworker $SQLITE hk|sleep .3;echo 5 e|5|e|5 e +par_sqlandworker $SQLITE | +par_sqlandworker_compress_linebuffer_tag $MYSQL p_wrapper par_sqlandworker_compress_linebuffer_tag '$MYSQL' +par_sqlandworker_compress_linebuffer_tag $MYSQL Exit=0 +par_sqlandworker_compress_linebuffer_tag $MYSQL Exit=0 +par_sqlandworker_compress_linebuffer_tag $MYSQL Host Command V1 V2 Stdout Stderr +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 1 a 1 a 1 a\t1 a\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 1 b 1 b 1 b\t1 b\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 1 c 1 c 1 c\t1 c\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 1 d 1 d 1 d\t1 d\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 1 e 1 e 1 e\t1 e\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 2 a 2 a 2 a\t2 a\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 2 b 2 b 2 b\t2 b\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 2 c 2 c 2 c\t2 c\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 2 d 2 d 2 d\t2 d\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 2 e 2 e 2 e\t2 e\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 3 a 3 a 3 a\t3 a\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 3 b 3 b 3 b\t3 b\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 3 c 3 c 3 c\t3 c\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 3 d 3 d 3 d\t3 d\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 3 e 3 e 3 e\t3 e\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 4 a 4 a 4 a\t4 a\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 4 b 4 b 4 b\t4 b\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 4 c 4 c 4 c\t4 c\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 4 d 4 d 4 d\t4 d\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 4 e 4 e 4 e\t4 e\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 5 a 5 a 5 a\t5 a\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 5 b 5 b 5 b\t5 b\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 5 c 5 c 5 c\t5 c\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 5 d 5 d 5 d\t5 d\n +par_sqlandworker_compress_linebuffer_tag $MYSQL hk sleep .3;echo 5 e 5 e 5 e\t5 e\n +par_sqlandworker_compress_linebuffer_tag $PG p_wrapper par_sqlandworker_compress_linebuffer_tag '$PG' +par_sqlandworker_compress_linebuffer_tag $PG Exit=0 +par_sqlandworker_compress_linebuffer_tag $PG Exit=0 +par_sqlandworker_compress_linebuffer_tag $PG host | command | v1 | v2 | stdout | stderr +par_sqlandworker_compress_linebuffer_tag $PG ------+-------------------+----+----+-------------+-------- +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 1 a | 1 | a | 1 a 1 a+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 1 b | 1 | b | 1 b 1 b+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 1 c | 1 | c | 1 c 1 c+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 1 d | 1 | d | 1 d 1 d+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 1 e | 1 | e | 1 e 1 e+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 2 a | 2 | a | 2 a 2 a+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 2 b | 2 | b | 2 b 2 b+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 2 c | 2 | c | 2 c 2 c+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 2 d | 2 | d | 2 d 2 d+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 2 e | 2 | e | 2 e 2 e+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 3 a | 3 | a | 3 a 3 a+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 3 b | 3 | b | 3 b 3 b+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 3 c | 3 | c | 3 c 3 c+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 3 d | 3 | d | 3 d 3 d+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 3 e | 3 | e | 3 e 3 e+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 4 a | 4 | a | 4 a 4 a+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 4 b | 4 | b | 4 b 4 b+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 4 c | 4 | c | 4 c 4 c+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 4 d | 4 | d | 4 d 4 d+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 4 e | 4 | e | 4 e 4 e+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 5 a | 5 | a | 5 a 5 a+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 5 b | 5 | b | 5 b 5 b+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 5 c | 5 | c | 5 c 5 c+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 5 d | 5 | d | 5 d 5 d+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG hk | sleep .3;echo 5 e | 5 | e | 5 e 5 e+| +par_sqlandworker_compress_linebuffer_tag $PG | | | | | +par_sqlandworker_compress_linebuffer_tag $PG (25 rows) +par_sqlandworker_compress_linebuffer_tag $PG +par_sqlandworker_compress_linebuffer_tag $SQLITE p_wrapper par_sqlandworker_compress_linebuffer_tag '$SQLITE' +par_sqlandworker_compress_linebuffer_tag $SQLITE Exit=0 +par_sqlandworker_compress_linebuffer_tag $SQLITE Exit=0 +par_sqlandworker_compress_linebuffer_tag $SQLITE Host|Command|V1|V2|Stdout|Stderr +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 1 a|1|a|1 a 1 a +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 1 b|1|b|1 b 1 b +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 1 c|1|c|1 c 1 c +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 1 d|1|d|1 d 1 d +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 1 e|1|e|1 e 1 e +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 2 a|2|a|2 a 2 a +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 2 b|2|b|2 b 2 b +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 2 c|2|c|2 c 2 c +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 2 d|2|d|2 d 2 d +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 2 e|2|e|2 e 2 e +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 3 a|3|a|3 a 3 a +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 3 b|3|b|3 b 3 b +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 3 c|3|c|3 c 3 c +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 3 d|3|d|3 d 3 d +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 3 e|3|e|3 e 3 e +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 4 a|4|a|4 a 4 a +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 4 b|4|b|4 b 4 b +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 4 c|4|c|4 c 4 c +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 4 d|4|d|4 d 4 d +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 4 e|4|e|4 e 4 e +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 5 a|5|a|5 a 5 a +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 5 b|5|b|5 b 5 b +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 5 c|5|c|5 c 5 c +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 5 d|5|d|5 d 5 d +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_compress_linebuffer_tag $SQLITE hk|sleep .3;echo 5 e|5|e|5 e 5 e +par_sqlandworker_compress_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer $MYSQL p_wrapper par_sqlandworker_linebuffer '$MYSQL' +par_sqlandworker_linebuffer $MYSQL Exit=0 +par_sqlandworker_linebuffer $MYSQL Exit=0 +par_sqlandworker_linebuffer $MYSQL Host Command V1 V2 Stdout Stderr +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 1 a 1 a 1 a\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 1 b 1 b 1 b\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 1 c 1 c 1 c\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 1 d 1 d 1 d\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 1 e 1 e 1 e\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 2 a 2 a 2 a\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 2 b 2 b 2 b\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 2 c 2 c 2 c\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 2 d 2 d 2 d\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 2 e 2 e 2 e\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 3 a 3 a 3 a\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 3 b 3 b 3 b\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 3 c 3 c 3 c\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 3 d 3 d 3 d\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 3 e 3 e 3 e\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 4 a 4 a 4 a\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 4 b 4 b 4 b\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 4 c 4 c 4 c\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 4 d 4 d 4 d\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 4 e 4 e 4 e\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 5 a 5 a 5 a\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 5 b 5 b 5 b\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 5 c 5 c 5 c\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 5 d 5 d 5 d\n +par_sqlandworker_linebuffer $MYSQL hk sleep .3;echo 5 e 5 e 5 e\n +par_sqlandworker_linebuffer $PG p_wrapper par_sqlandworker_linebuffer '$PG' +par_sqlandworker_linebuffer $PG Exit=0 +par_sqlandworker_linebuffer $PG Exit=0 +par_sqlandworker_linebuffer $PG host | command | v1 | v2 | stdout | stderr +par_sqlandworker_linebuffer $PG ------+-------------------+----+----+--------+-------- +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 1 a | 1 | a | 1 a +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 1 b | 1 | b | 1 b +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 1 c | 1 | c | 1 c +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 1 d | 1 | d | 1 d +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 1 e | 1 | e | 1 e +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 2 a | 2 | a | 2 a +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 2 b | 2 | b | 2 b +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 2 c | 2 | c | 2 c +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 2 d | 2 | d | 2 d +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 2 e | 2 | e | 2 e +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 3 a | 3 | a | 3 a +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 3 b | 3 | b | 3 b +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 3 c | 3 | c | 3 c +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 3 d | 3 | d | 3 d +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 3 e | 3 | e | 3 e +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 4 a | 4 | a | 4 a +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 4 b | 4 | b | 4 b +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 4 c | 4 | c | 4 c +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 4 d | 4 | d | 4 d +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 4 e | 4 | e | 4 e +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 5 a | 5 | a | 5 a +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 5 b | 5 | b | 5 b +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 5 c | 5 | c | 5 c +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 5 d | 5 | d | 5 d +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG hk | sleep .3;echo 5 e | 5 | e | 5 e +| +par_sqlandworker_linebuffer $PG | | | | | +par_sqlandworker_linebuffer $PG (25 rows) +par_sqlandworker_linebuffer $PG +par_sqlandworker_linebuffer $SQLITE p_wrapper par_sqlandworker_linebuffer '$SQLITE' +par_sqlandworker_linebuffer $SQLITE Exit=0 +par_sqlandworker_linebuffer $SQLITE Exit=0 +par_sqlandworker_linebuffer $SQLITE Host|Command|V1|V2|Stdout|Stderr +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 1 a|1|a|1 a +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 1 b|1|b|1 b +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 1 c|1|c|1 c +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 1 d|1|d|1 d +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 1 e|1|e|1 e +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 2 a|2|a|2 a +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 2 b|2|b|2 b +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 2 c|2|c|2 c +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 2 d|2|d|2 d +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 2 e|2|e|2 e +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 3 a|3|a|3 a +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 3 b|3|b|3 b +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 3 c|3|c|3 c +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 3 d|3|d|3 d +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 3 e|3|e|3 e +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 4 a|4|a|4 a +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 4 b|4|b|4 b +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 4 c|4|c|4 c +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 4 d|4|d|4 d +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 4 e|4|e|4 e +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 5 a|5|a|5 a +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 5 b|5|b|5 b +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 5 c|5|c|5 c +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 5 d|5|d|5 d +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer $SQLITE hk|sleep .3;echo 5 e|5|e|5 e +par_sqlandworker_linebuffer $SQLITE | +par_sqlandworker_linebuffer_tag $MYSQL p_wrapper par_sqlandworker_linebuffer_tag '$MYSQL' +par_sqlandworker_linebuffer_tag $MYSQL Exit=0 +par_sqlandworker_linebuffer_tag $MYSQL Exit=0 +par_sqlandworker_linebuffer_tag $MYSQL Host Command V1 V2 Stdout Stderr +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 1 a 1 a 1 a\t1 a\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 1 b 1 b 1 b\t1 b\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 1 c 1 c 1 c\t1 c\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 1 d 1 d 1 d\t1 d\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 1 e 1 e 1 e\t1 e\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 2 a 2 a 2 a\t2 a\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 2 b 2 b 2 b\t2 b\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 2 c 2 c 2 c\t2 c\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 2 d 2 d 2 d\t2 d\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 2 e 2 e 2 e\t2 e\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 3 a 3 a 3 a\t3 a\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 3 b 3 b 3 b\t3 b\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 3 c 3 c 3 c\t3 c\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 3 d 3 d 3 d\t3 d\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 3 e 3 e 3 e\t3 e\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 4 a 4 a 4 a\t4 a\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 4 b 4 b 4 b\t4 b\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 4 c 4 c 4 c\t4 c\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 4 d 4 d 4 d\t4 d\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 4 e 4 e 4 e\t4 e\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 5 a 5 a 5 a\t5 a\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 5 b 5 b 5 b\t5 b\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 5 c 5 c 5 c\t5 c\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 5 d 5 d 5 d\t5 d\n +par_sqlandworker_linebuffer_tag $MYSQL hk sleep .3;echo 5 e 5 e 5 e\t5 e\n +par_sqlandworker_linebuffer_tag $PG p_wrapper par_sqlandworker_linebuffer_tag '$PG' +par_sqlandworker_linebuffer_tag $PG Exit=0 +par_sqlandworker_linebuffer_tag $PG Exit=0 +par_sqlandworker_linebuffer_tag $PG host | command | v1 | v2 | stdout | stderr +par_sqlandworker_linebuffer_tag $PG ------+-------------------+----+----+-------------+-------- +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 1 a | 1 | a | 1 a 1 a+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 1 b | 1 | b | 1 b 1 b+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 1 c | 1 | c | 1 c 1 c+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 1 d | 1 | d | 1 d 1 d+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 1 e | 1 | e | 1 e 1 e+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 2 a | 2 | a | 2 a 2 a+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 2 b | 2 | b | 2 b 2 b+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 2 c | 2 | c | 2 c 2 c+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 2 d | 2 | d | 2 d 2 d+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 2 e | 2 | e | 2 e 2 e+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 3 a | 3 | a | 3 a 3 a+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 3 b | 3 | b | 3 b 3 b+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 3 c | 3 | c | 3 c 3 c+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 3 d | 3 | d | 3 d 3 d+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 3 e | 3 | e | 3 e 3 e+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 4 a | 4 | a | 4 a 4 a+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 4 b | 4 | b | 4 b 4 b+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 4 c | 4 | c | 4 c 4 c+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 4 d | 4 | d | 4 d 4 d+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 4 e | 4 | e | 4 e 4 e+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 5 a | 5 | a | 5 a 5 a+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 5 b | 5 | b | 5 b 5 b+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 5 c | 5 | c | 5 c 5 c+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 5 d | 5 | d | 5 d 5 d+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG hk | sleep .3;echo 5 e | 5 | e | 5 e 5 e+| +par_sqlandworker_linebuffer_tag $PG | | | | | +par_sqlandworker_linebuffer_tag $PG (25 rows) +par_sqlandworker_linebuffer_tag $PG +par_sqlandworker_linebuffer_tag $SQLITE p_wrapper par_sqlandworker_linebuffer_tag '$SQLITE' +par_sqlandworker_linebuffer_tag $SQLITE Exit=0 +par_sqlandworker_linebuffer_tag $SQLITE Exit=0 +par_sqlandworker_linebuffer_tag $SQLITE Host|Command|V1|V2|Stdout|Stderr +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 1 a|1|a|1 a 1 a +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 1 b|1|b|1 b 1 b +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 1 c|1|c|1 c 1 c +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 1 d|1|d|1 d 1 d +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 1 e|1|e|1 e 1 e +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 2 a|2|a|2 a 2 a +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 2 b|2|b|2 b 2 b +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 2 c|2|c|2 c 2 c +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 2 d|2|d|2 d 2 d +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 2 e|2|e|2 e 2 e +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 3 a|3|a|3 a 3 a +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 3 b|3|b|3 b 3 b +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 3 c|3|c|3 c 3 c +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 3 d|3|d|3 d 3 d +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 3 e|3|e|3 e 3 e +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 4 a|4|a|4 a 4 a +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 4 b|4|b|4 b 4 b +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 4 c|4|c|4 c 4 c +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 4 d|4|d|4 d 4 d +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 4 e|4|e|4 e 4 e +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 5 a|5|a|5 a 5 a +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 5 b|5|b|5 b 5 b +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 5 c|5|c|5 c 5 c +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 5 d|5|d|5 d 5 d +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_linebuffer_tag $SQLITE hk|sleep .3;echo 5 e|5|e|5 e 5 e +par_sqlandworker_linebuffer_tag $SQLITE | +par_sqlandworker_lo $MYSQL p_wrapper par_sqlandworker_lo '$MYSQL' +par_sqlandworker_lo $MYSQL Exit=0 +par_sqlandworker_lo $MYSQL Exit=0 +par_sqlandworker_lo $MYSQL Host Command V1 V2 Stdout Stderr +par_sqlandworker_lo $MYSQL lo sleep .3;echo 1 a 1 a 1 a\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 1 b 1 b 1 b\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 1 c 1 c 1 c\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 1 d 1 d 1 d\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 1 e 1 e 1 e\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 2 a 2 a 2 a\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 2 b 2 b 2 b\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 2 c 2 c 2 c\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 2 d 2 d 2 d\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 2 e 2 e 2 e\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 3 a 3 a 3 a\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 3 b 3 b 3 b\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 3 c 3 c 3 c\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 3 d 3 d 3 d\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 3 e 3 e 3 e\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 4 a 4 a 4 a\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 4 b 4 b 4 b\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 4 c 4 c 4 c\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 4 d 4 d 4 d\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 4 e 4 e 4 e\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 5 a 5 a 5 a\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 5 b 5 b 5 b\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 5 c 5 c 5 c\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 5 d 5 d 5 d\n +par_sqlandworker_lo $MYSQL lo sleep .3;echo 5 e 5 e 5 e\n +par_sqlandworker_lo $PG p_wrapper par_sqlandworker_lo '$PG' +par_sqlandworker_lo $PG Exit=0 +par_sqlandworker_lo $PG Exit=0 +par_sqlandworker_lo $PG host | command | v1 | v2 | stdout | stderr +par_sqlandworker_lo $PG ------+-------------------+----+----+--------+-------- +par_sqlandworker_lo $PG lo | sleep .3;echo 1 a | 1 | a | 1 a +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 1 b | 1 | b | 1 b +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 1 c | 1 | c | 1 c +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 1 d | 1 | d | 1 d +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 1 e | 1 | e | 1 e +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 2 a | 2 | a | 2 a +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 2 b | 2 | b | 2 b +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 2 c | 2 | c | 2 c +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 2 d | 2 | d | 2 d +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 2 e | 2 | e | 2 e +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 3 a | 3 | a | 3 a +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 3 b | 3 | b | 3 b +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 3 c | 3 | c | 3 c +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 3 d | 3 | d | 3 d +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 3 e | 3 | e | 3 e +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 4 a | 4 | a | 4 a +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 4 b | 4 | b | 4 b +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 4 c | 4 | c | 4 c +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 4 d | 4 | d | 4 d +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 4 e | 4 | e | 4 e +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 5 a | 5 | a | 5 a +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 5 b | 5 | b | 5 b +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 5 c | 5 | c | 5 c +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 5 d | 5 | d | 5 d +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG lo | sleep .3;echo 5 e | 5 | e | 5 e +| +par_sqlandworker_lo $PG | | | | | +par_sqlandworker_lo $PG (25 rows) +par_sqlandworker_lo $PG +par_sqlandworker_lo $SQLITE p_wrapper par_sqlandworker_lo '$SQLITE' +par_sqlandworker_lo $SQLITE Exit=0 +par_sqlandworker_lo $SQLITE Exit=0 +par_sqlandworker_lo $SQLITE Host|Command|V1|V2|Stdout|Stderr +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 1 a|1|a|1 a +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 1 b|1|b|1 b +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 1 c|1|c|1 c +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 1 d|1|d|1 d +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 1 e|1|e|1 e +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 2 a|2|a|2 a +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 2 b|2|b|2 b +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 2 c|2|c|2 c +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 2 d|2|d|2 d +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 2 e|2|e|2 e +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 3 a|3|a|3 a +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 3 b|3|b|3 b +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 3 c|3|c|3 c +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 3 d|3|d|3 d +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 3 e|3|e|3 e +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 4 a|4|a|4 a +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 4 b|4|b|4 b +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 4 c|4|c|4 c +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 4 d|4|d|4 d +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 4 e|4|e|4 e +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 5 a|5|a|5 a +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 5 b|5|b|5 b +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 5 c|5|c|5 c +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 5 d|5|d|5 d +par_sqlandworker_lo $SQLITE | +par_sqlandworker_lo $SQLITE lo|sleep .3;echo 5 e|5|e|5 e +par_sqlandworker_lo $SQLITE | +par_sqlandworker_results $MYSQL p_wrapper par_sqlandworker_results '$MYSQL' +par_sqlandworker_results $MYSQL Exit=0 +par_sqlandworker_results $MYSQL Exit=0 +par_sqlandworker_results $MYSQL Host Command V1 V2 Stdout Stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 1 a 1 a /tmp/out--sql/1/1/2/a/stdout /tmp/out--sql/1/1/2/a/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 1 b 1 b /tmp/out--sql/1/1/2/b/stdout /tmp/out--sql/1/1/2/b/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 1 c 1 c /tmp/out--sql/1/1/2/c/stdout /tmp/out--sql/1/1/2/c/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 1 d 1 d /tmp/out--sql/1/1/2/d/stdout /tmp/out--sql/1/1/2/d/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 1 e 1 e /tmp/out--sql/1/1/2/e/stdout /tmp/out--sql/1/1/2/e/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 2 a 2 a /tmp/out--sql/1/2/2/a/stdout /tmp/out--sql/1/2/2/a/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 2 b 2 b /tmp/out--sql/1/2/2/b/stdout /tmp/out--sql/1/2/2/b/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 2 c 2 c /tmp/out--sql/1/2/2/c/stdout /tmp/out--sql/1/2/2/c/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 2 d 2 d /tmp/out--sql/1/2/2/d/stdout /tmp/out--sql/1/2/2/d/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 2 e 2 e /tmp/out--sql/1/2/2/e/stdout /tmp/out--sql/1/2/2/e/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 3 a 3 a /tmp/out--sql/1/3/2/a/stdout /tmp/out--sql/1/3/2/a/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 3 b 3 b /tmp/out--sql/1/3/2/b/stdout /tmp/out--sql/1/3/2/b/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 3 c 3 c /tmp/out--sql/1/3/2/c/stdout /tmp/out--sql/1/3/2/c/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 3 d 3 d /tmp/out--sql/1/3/2/d/stdout /tmp/out--sql/1/3/2/d/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 3 e 3 e /tmp/out--sql/1/3/2/e/stdout /tmp/out--sql/1/3/2/e/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 4 a 4 a /tmp/out--sql/1/4/2/a/stdout /tmp/out--sql/1/4/2/a/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 4 b 4 b /tmp/out--sql/1/4/2/b/stdout /tmp/out--sql/1/4/2/b/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 4 c 4 c /tmp/out--sql/1/4/2/c/stdout /tmp/out--sql/1/4/2/c/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 4 d 4 d /tmp/out--sql/1/4/2/d/stdout /tmp/out--sql/1/4/2/d/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 4 e 4 e /tmp/out--sql/1/4/2/e/stdout /tmp/out--sql/1/4/2/e/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 5 a 5 a /tmp/out--sql/1/5/2/a/stdout /tmp/out--sql/1/5/2/a/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 5 b 5 b /tmp/out--sql/1/5/2/b/stdout /tmp/out--sql/1/5/2/b/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 5 c 5 c /tmp/out--sql/1/5/2/c/stdout /tmp/out--sql/1/5/2/c/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 5 d 5 d /tmp/out--sql/1/5/2/d/stdout /tmp/out--sql/1/5/2/d/stderr +par_sqlandworker_results $MYSQL hk sleep .3;echo 5 e 5 e /tmp/out--sql/1/5/2/e/stdout /tmp/out--sql/1/5/2/e/stderr +par_sqlandworker_results $PG p_wrapper par_sqlandworker_results '$PG' +par_sqlandworker_results $PG Exit=0 +par_sqlandworker_results $PG Exit=0 +par_sqlandworker_results $PG host | command | v1 | v2 | stdout | stderr +par_sqlandworker_results $PG ------+-------------------+----+----+------------------------------+------------------------------ +par_sqlandworker_results $PG hk | sleep .3;echo 1 a | 1 | a | /tmp/out--sql/1/1/2/a/stdout | /tmp/out--sql/1/1/2/a/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 1 b | 1 | b | /tmp/out--sql/1/1/2/b/stdout | /tmp/out--sql/1/1/2/b/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 1 c | 1 | c | /tmp/out--sql/1/1/2/c/stdout | /tmp/out--sql/1/1/2/c/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 1 d | 1 | d | /tmp/out--sql/1/1/2/d/stdout | /tmp/out--sql/1/1/2/d/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 1 e | 1 | e | /tmp/out--sql/1/1/2/e/stdout | /tmp/out--sql/1/1/2/e/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 2 a | 2 | a | /tmp/out--sql/1/2/2/a/stdout | /tmp/out--sql/1/2/2/a/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 2 b | 2 | b | /tmp/out--sql/1/2/2/b/stdout | /tmp/out--sql/1/2/2/b/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 2 c | 2 | c | /tmp/out--sql/1/2/2/c/stdout | /tmp/out--sql/1/2/2/c/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 2 d | 2 | d | /tmp/out--sql/1/2/2/d/stdout | /tmp/out--sql/1/2/2/d/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 2 e | 2 | e | /tmp/out--sql/1/2/2/e/stdout | /tmp/out--sql/1/2/2/e/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 3 a | 3 | a | /tmp/out--sql/1/3/2/a/stdout | /tmp/out--sql/1/3/2/a/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 3 b | 3 | b | /tmp/out--sql/1/3/2/b/stdout | /tmp/out--sql/1/3/2/b/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 3 c | 3 | c | /tmp/out--sql/1/3/2/c/stdout | /tmp/out--sql/1/3/2/c/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 3 d | 3 | d | /tmp/out--sql/1/3/2/d/stdout | /tmp/out--sql/1/3/2/d/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 3 e | 3 | e | /tmp/out--sql/1/3/2/e/stdout | /tmp/out--sql/1/3/2/e/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 4 a | 4 | a | /tmp/out--sql/1/4/2/a/stdout | /tmp/out--sql/1/4/2/a/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 4 b | 4 | b | /tmp/out--sql/1/4/2/b/stdout | /tmp/out--sql/1/4/2/b/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 4 c | 4 | c | /tmp/out--sql/1/4/2/c/stdout | /tmp/out--sql/1/4/2/c/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 4 d | 4 | d | /tmp/out--sql/1/4/2/d/stdout | /tmp/out--sql/1/4/2/d/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 4 e | 4 | e | /tmp/out--sql/1/4/2/e/stdout | /tmp/out--sql/1/4/2/e/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 5 a | 5 | a | /tmp/out--sql/1/5/2/a/stdout | /tmp/out--sql/1/5/2/a/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 5 b | 5 | b | /tmp/out--sql/1/5/2/b/stdout | /tmp/out--sql/1/5/2/b/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 5 c | 5 | c | /tmp/out--sql/1/5/2/c/stdout | /tmp/out--sql/1/5/2/c/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 5 d | 5 | d | /tmp/out--sql/1/5/2/d/stdout | /tmp/out--sql/1/5/2/d/stderr +par_sqlandworker_results $PG hk | sleep .3;echo 5 e | 5 | e | /tmp/out--sql/1/5/2/e/stdout | /tmp/out--sql/1/5/2/e/stderr +par_sqlandworker_results $PG (25 rows) +par_sqlandworker_results $PG +par_sqlandworker_results $SQLITE p_wrapper par_sqlandworker_results '$SQLITE' +par_sqlandworker_results $SQLITE Exit=0 +par_sqlandworker_results $SQLITE Exit=0 +par_sqlandworker_results $SQLITE Host|Command|V1|V2|Stdout|Stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 1 a|1|a|/tmp/out--sql/1/1/2/a/stdout|/tmp/out--sql/1/1/2/a/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 1 b|1|b|/tmp/out--sql/1/1/2/b/stdout|/tmp/out--sql/1/1/2/b/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 1 c|1|c|/tmp/out--sql/1/1/2/c/stdout|/tmp/out--sql/1/1/2/c/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 1 d|1|d|/tmp/out--sql/1/1/2/d/stdout|/tmp/out--sql/1/1/2/d/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 1 e|1|e|/tmp/out--sql/1/1/2/e/stdout|/tmp/out--sql/1/1/2/e/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 2 a|2|a|/tmp/out--sql/1/2/2/a/stdout|/tmp/out--sql/1/2/2/a/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 2 b|2|b|/tmp/out--sql/1/2/2/b/stdout|/tmp/out--sql/1/2/2/b/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 2 c|2|c|/tmp/out--sql/1/2/2/c/stdout|/tmp/out--sql/1/2/2/c/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 2 d|2|d|/tmp/out--sql/1/2/2/d/stdout|/tmp/out--sql/1/2/2/d/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 2 e|2|e|/tmp/out--sql/1/2/2/e/stdout|/tmp/out--sql/1/2/2/e/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 3 a|3|a|/tmp/out--sql/1/3/2/a/stdout|/tmp/out--sql/1/3/2/a/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 3 b|3|b|/tmp/out--sql/1/3/2/b/stdout|/tmp/out--sql/1/3/2/b/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 3 c|3|c|/tmp/out--sql/1/3/2/c/stdout|/tmp/out--sql/1/3/2/c/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 3 d|3|d|/tmp/out--sql/1/3/2/d/stdout|/tmp/out--sql/1/3/2/d/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 3 e|3|e|/tmp/out--sql/1/3/2/e/stdout|/tmp/out--sql/1/3/2/e/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 4 a|4|a|/tmp/out--sql/1/4/2/a/stdout|/tmp/out--sql/1/4/2/a/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 4 b|4|b|/tmp/out--sql/1/4/2/b/stdout|/tmp/out--sql/1/4/2/b/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 4 c|4|c|/tmp/out--sql/1/4/2/c/stdout|/tmp/out--sql/1/4/2/c/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 4 d|4|d|/tmp/out--sql/1/4/2/d/stdout|/tmp/out--sql/1/4/2/d/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 4 e|4|e|/tmp/out--sql/1/4/2/e/stdout|/tmp/out--sql/1/4/2/e/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 5 a|5|a|/tmp/out--sql/1/5/2/a/stdout|/tmp/out--sql/1/5/2/a/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 5 b|5|b|/tmp/out--sql/1/5/2/b/stdout|/tmp/out--sql/1/5/2/b/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 5 c|5|c|/tmp/out--sql/1/5/2/c/stdout|/tmp/out--sql/1/5/2/c/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 5 d|5|d|/tmp/out--sql/1/5/2/d/stdout|/tmp/out--sql/1/5/2/d/stderr +par_sqlandworker_results $SQLITE hk|sleep .3;echo 5 e|5|e|/tmp/out--sql/1/5/2/e/stdout|/tmp/out--sql/1/5/2/e/stderr +par_sqlandworker_tag $MYSQL p_wrapper par_sqlandworker_tag '$MYSQL' +par_sqlandworker_tag $MYSQL Exit=0 +par_sqlandworker_tag $MYSQL Exit=0 +par_sqlandworker_tag $MYSQL Host Command V1 V2 Stdout Stderr +par_sqlandworker_tag $MYSQL hk sleep .3;echo 1 a 1 a 1 a\t1 a\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 1 b 1 b 1 b\t1 b\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 1 c 1 c 1 c\t1 c\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 1 d 1 d 1 d\t1 d\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 1 e 1 e 1 e\t1 e\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 2 a 2 a 2 a\t2 a\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 2 b 2 b 2 b\t2 b\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 2 c 2 c 2 c\t2 c\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 2 d 2 d 2 d\t2 d\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 2 e 2 e 2 e\t2 e\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 3 a 3 a 3 a\t3 a\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 3 b 3 b 3 b\t3 b\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 3 c 3 c 3 c\t3 c\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 3 d 3 d 3 d\t3 d\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 3 e 3 e 3 e\t3 e\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 4 a 4 a 4 a\t4 a\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 4 b 4 b 4 b\t4 b\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 4 c 4 c 4 c\t4 c\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 4 d 4 d 4 d\t4 d\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 4 e 4 e 4 e\t4 e\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 5 a 5 a 5 a\t5 a\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 5 b 5 b 5 b\t5 b\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 5 c 5 c 5 c\t5 c\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 5 d 5 d 5 d\t5 d\n +par_sqlandworker_tag $MYSQL hk sleep .3;echo 5 e 5 e 5 e\t5 e\n +par_sqlandworker_tag $PG p_wrapper par_sqlandworker_tag '$PG' +par_sqlandworker_tag $PG Exit=0 +par_sqlandworker_tag $PG Exit=0 +par_sqlandworker_tag $PG host | command | v1 | v2 | stdout | stderr +par_sqlandworker_tag $PG ------+-------------------+----+----+-------------+-------- +par_sqlandworker_tag $PG hk | sleep .3;echo 1 a | 1 | a | 1 a 1 a+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 1 b | 1 | b | 1 b 1 b+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 1 c | 1 | c | 1 c 1 c+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 1 d | 1 | d | 1 d 1 d+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 1 e | 1 | e | 1 e 1 e+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 2 a | 2 | a | 2 a 2 a+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 2 b | 2 | b | 2 b 2 b+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 2 c | 2 | c | 2 c 2 c+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 2 d | 2 | d | 2 d 2 d+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 2 e | 2 | e | 2 e 2 e+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 3 a | 3 | a | 3 a 3 a+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 3 b | 3 | b | 3 b 3 b+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 3 c | 3 | c | 3 c 3 c+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 3 d | 3 | d | 3 d 3 d+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 3 e | 3 | e | 3 e 3 e+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 4 a | 4 | a | 4 a 4 a+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 4 b | 4 | b | 4 b 4 b+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 4 c | 4 | c | 4 c 4 c+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 4 d | 4 | d | 4 d 4 d+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 4 e | 4 | e | 4 e 4 e+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 5 a | 5 | a | 5 a 5 a+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 5 b | 5 | b | 5 b 5 b+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 5 c | 5 | c | 5 c 5 c+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 5 d | 5 | d | 5 d 5 d+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG hk | sleep .3;echo 5 e | 5 | e | 5 e 5 e+| +par_sqlandworker_tag $PG | | | | | +par_sqlandworker_tag $PG (25 rows) +par_sqlandworker_tag $PG +par_sqlandworker_tag $SQLITE p_wrapper par_sqlandworker_tag '$SQLITE' +par_sqlandworker_tag $SQLITE Exit=0 +par_sqlandworker_tag $SQLITE Exit=0 +par_sqlandworker_tag $SQLITE Host|Command|V1|V2|Stdout|Stderr +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 1 a|1|a|1 a 1 a +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 1 b|1|b|1 b 1 b +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 1 c|1|c|1 c 1 c +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 1 d|1|d|1 d 1 d +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 1 e|1|e|1 e 1 e +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 2 a|2|a|2 a 2 a +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 2 b|2|b|2 b 2 b +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 2 c|2|c|2 c 2 c +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 2 d|2|d|2 d 2 d +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 2 e|2|e|2 e 2 e +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 3 a|3|a|3 a 3 a +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 3 b|3|b|3 b 3 b +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 3 c|3|c|3 c 3 c +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 3 d|3|d|3 d 3 d +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 3 e|3|e|3 e 3 e +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 4 a|4|a|4 a 4 a +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 4 b|4|b|4 b 4 b +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 4 c|4|c|4 c 4 c +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 4 d|4|d|4 d 4 d +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 4 e|4|e|4 e 4 e +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 5 a|5|a|5 a 5 a +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 5 b|5|b|5 b 5 b +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 5 c|5|c|5 c 5 c +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 5 d|5|d|5 d 5 d +par_sqlandworker_tag $SQLITE | +par_sqlandworker_tag $SQLITE hk|sleep .3;echo 5 e|5|e|5 e 5 e +par_sqlandworker_tag $SQLITE | +par_sqlandworker_total_jobs $MYSQL p_wrapper par_sqlandworker_total_jobs '$MYSQL' +par_sqlandworker_total_jobs $MYSQL Exit=0 +par_sqlandworker_total_jobs $MYSQL Exit=0 +par_sqlandworker_total_jobs $MYSQL Host Command V1 V2 Stdout Stderr +par_sqlandworker_total_jobs $MYSQL hk echo 1 of 25; sleep .3;echo 1 a 1 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 2 of 25; sleep .3;echo 1 b 2 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 3 of 25; sleep .3;echo 1 c 3 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 4 of 25; sleep .3;echo 1 d 4 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 5 of 25; sleep .3;echo 1 e 5 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 6 of 25; sleep .3;echo 2 a 6 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 7 of 25; sleep .3;echo 2 b 7 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 8 of 25; sleep .3;echo 2 c 8 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 9 of 25; sleep .3;echo 2 d 9 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 10 of 25; sleep .3;echo 2 e 10 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 11 of 25; sleep .3;echo 3 a 11 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 12 of 25; sleep .3;echo 3 b 12 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 13 of 25; sleep .3;echo 3 c 13 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 14 of 25; sleep .3;echo 3 d 14 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 15 of 25; sleep .3;echo 3 e 15 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 16 of 25; sleep .3;echo 4 a 16 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 17 of 25; sleep .3;echo 4 b 17 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 18 of 25; sleep .3;echo 4 c 18 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 19 of 25; sleep .3;echo 4 d 19 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 20 of 25; sleep .3;echo 4 e 20 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 21 of 25; sleep .3;echo 5 a 21 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 22 of 25; sleep .3;echo 5 b 22 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 23 of 25; sleep .3;echo 5 c 23 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 24 of 25; sleep .3;echo 5 d 24 of 25\n\n +par_sqlandworker_total_jobs $MYSQL hk echo 25 of 25; sleep .3;echo 5 e 25 of 25\n\n +par_sqlandworker_total_jobs $PG p_wrapper par_sqlandworker_total_jobs '$PG' +par_sqlandworker_total_jobs $PG Exit=0 +par_sqlandworker_total_jobs $PG Exit=0 +par_sqlandworker_total_jobs $PG host | command | v1 | v2 | stdout | stderr +par_sqlandworker_total_jobs $PG ------+------------------------------+----+----+----------+-------- +par_sqlandworker_total_jobs $PG hk | echo 1 of 25; sleep .3;echo | 1 | a | 1 of 25 +| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 2 of 25; sleep .3;echo | 1 | b | 2 of 25 +| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 3 of 25; sleep .3;echo | 1 | c | 3 of 25 +| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 4 of 25; sleep .3;echo | 1 | d | 4 of 25 +| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 5 of 25; sleep .3;echo | 1 | e | 5 of 25 +| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 6 of 25; sleep .3;echo | 2 | a | 6 of 25 +| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 7 of 25; sleep .3;echo | 2 | b | 7 of 25 +| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 8 of 25; sleep .3;echo | 2 | c | 8 of 25 +| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 9 of 25; sleep .3;echo | 2 | d | 9 of 25 +| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 10 of 25; sleep .3;echo | 2 | e | 10 of 25+| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 11 of 25; sleep .3;echo | 3 | a | 11 of 25+| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 12 of 25; sleep .3;echo | 3 | b | 12 of 25+| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 13 of 25; sleep .3;echo | 3 | c | 13 of 25+| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 14 of 25; sleep .3;echo | 3 | d | 14 of 25+| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 15 of 25; sleep .3;echo | 3 | e | 15 of 25+| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 16 of 25; sleep .3;echo | 4 | a | 16 of 25+| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 17 of 25; sleep .3;echo | 4 | b | 17 of 25+| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 18 of 25; sleep .3;echo | 4 | c | 18 of 25+| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 19 of 25; sleep .3;echo | 4 | d | 19 of 25+| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 20 of 25; sleep .3;echo | 4 | e | 20 of 25+| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 21 of 25; sleep .3;echo | 5 | a | 21 of 25+| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 22 of 25; sleep .3;echo | 5 | b | 22 of 25+| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 23 of 25; sleep .3;echo | 5 | c | 23 of 25+| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 24 of 25; sleep .3;echo | 5 | d | 24 of 25+| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG hk | echo 25 of 25; sleep .3;echo | 5 | e | 25 of 25+| +par_sqlandworker_total_jobs $PG | | | | +| +par_sqlandworker_total_jobs $PG | | | | | +par_sqlandworker_total_jobs $PG (25 rows) +par_sqlandworker_total_jobs $PG +par_sqlandworker_total_jobs $SQLITE p_wrapper par_sqlandworker_total_jobs '$SQLITE' +par_sqlandworker_total_jobs $SQLITE Exit=0 +par_sqlandworker_total_jobs $SQLITE Exit=0 +par_sqlandworker_total_jobs $SQLITE Host|Command|V1|V2|Stdout|Stderr +par_sqlandworker_total_jobs $SQLITE hk|echo 1 of 25; sleep .3;echo|1|a|1 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 2 of 25; sleep .3;echo|1|b|2 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 3 of 25; sleep .3;echo|1|c|3 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 4 of 25; sleep .3;echo|1|d|4 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 5 of 25; sleep .3;echo|1|e|5 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 6 of 25; sleep .3;echo|2|a|6 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 7 of 25; sleep .3;echo|2|b|7 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 8 of 25; sleep .3;echo|2|c|8 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 9 of 25; sleep .3;echo|2|d|9 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 10 of 25; sleep .3;echo|2|e|10 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 11 of 25; sleep .3;echo|3|a|11 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 12 of 25; sleep .3;echo|3|b|12 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 13 of 25; sleep .3;echo|3|c|13 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 14 of 25; sleep .3;echo|3|d|14 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 15 of 25; sleep .3;echo|3|e|15 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 16 of 25; sleep .3;echo|4|a|16 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 17 of 25; sleep .3;echo|4|b|17 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 18 of 25; sleep .3;echo|4|c|18 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 19 of 25; sleep .3;echo|4|d|19 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 20 of 25; sleep .3;echo|4|e|20 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 21 of 25; sleep .3;echo|5|a|21 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 22 of 25; sleep .3;echo|5|b|22 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 23 of 25; sleep .3;echo|5|c|23 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 24 of 25; sleep .3;echo|5|d|24 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_total_jobs $SQLITE hk|echo 25 of 25; sleep .3;echo|5|e|25 of 25 +par_sqlandworker_total_jobs $SQLITE +par_sqlandworker_total_jobs $SQLITE | +par_sqlandworker_unbuffer $MYSQL p_wrapper par_sqlandworker_unbuffer '$MYSQL' +par_sqlandworker_unbuffer $MYSQL Exit=0 +par_sqlandworker_unbuffer $MYSQL Exit=0 +par_sqlandworker_unbuffer $MYSQL Host Command V1 V2 Stdout Stderr +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 1 a 1 a +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 1 b 1 b +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 1 c 1 c +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 1 d 1 d +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 1 e 1 e +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 2 a 2 a +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 2 b 2 b +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 2 c 2 c +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 2 d 2 d +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 2 e 2 e +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 3 a 3 a +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 3 b 3 b +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 3 c 3 c +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 3 d 3 d +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 3 e 3 e +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 4 a 4 a +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 4 b 4 b +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 4 c 4 c +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 4 d 4 d +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 4 e 4 e +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 5 a 5 a +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 5 b 5 b +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 5 c 5 c +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 5 d 5 d +par_sqlandworker_unbuffer $MYSQL hk sleep .3;echo 5 e 5 e +par_sqlandworker_unbuffer $PG p_wrapper par_sqlandworker_unbuffer '$PG' +par_sqlandworker_unbuffer $PG Exit=0 +par_sqlandworker_unbuffer $PG Exit=0 +par_sqlandworker_unbuffer $PG host | command | v1 | v2 | stdout | stderr +par_sqlandworker_unbuffer $PG ------+-------------------+----+----+--------+-------- +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 1 a | 1 | a | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 1 b | 1 | b | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 1 c | 1 | c | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 1 d | 1 | d | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 1 e | 1 | e | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 2 a | 2 | a | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 2 b | 2 | b | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 2 c | 2 | c | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 2 d | 2 | d | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 2 e | 2 | e | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 3 a | 3 | a | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 3 b | 3 | b | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 3 c | 3 | c | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 3 d | 3 | d | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 3 e | 3 | e | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 4 a | 4 | a | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 4 b | 4 | b | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 4 c | 4 | c | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 4 d | 4 | d | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 4 e | 4 | e | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 5 a | 5 | a | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 5 b | 5 | b | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 5 c | 5 | c | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 5 d | 5 | d | | +par_sqlandworker_unbuffer $PG hk | sleep .3;echo 5 e | 5 | e | | +par_sqlandworker_unbuffer $PG (25 rows) +par_sqlandworker_unbuffer $PG +par_sqlandworker_unbuffer $SQLITE p_wrapper par_sqlandworker_unbuffer '$SQLITE' +par_sqlandworker_unbuffer $SQLITE Exit=0 +par_sqlandworker_unbuffer $SQLITE Exit=0 +par_sqlandworker_unbuffer $SQLITE Host|Command|V1|V2|Stdout|Stderr +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 1 a|1|a|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 1 b|1|b|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 1 c|1|c|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 1 d|1|d|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 1 e|1|e|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 2 a|2|a|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 2 b|2|b|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 2 c|2|c|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 2 d|2|d|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 2 e|2|e|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 3 a|3|a|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 3 b|3|b|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 3 c|3|c|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 3 d|3|d|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 3 e|3|e|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 4 a|4|a|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 4 b|4|b|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 4 c|4|c|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 4 d|4|d|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 4 e|4|e|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 5 a|5|a|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 5 b|5|b|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 5 c|5|c|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 5 d|5|d|| +par_sqlandworker_unbuffer $SQLITE hk|sleep .3;echo 5 e|5|e|| diff --git a/testsuite/wanted-results/parallel-local-ssh1 b/testsuite/wanted-results/parallel-local-ssh1 index 9edb3515..a12928e0 100644 --- a/testsuite/wanted-results/parallel-local-ssh1 +++ b/testsuite/wanted-results/parallel-local-ssh1 @@ -3,25 +3,25 @@ echo '### Test --load remote' ssh parallel@lo 'seq 10 | parallel --nice 19 --timeout 15 -j0 -qN0 perl -e while\(1\)\{\ \}' & sleep 1; stdout /usr/bin/time -f %e parallel -S parallel@lo --load 10 sleep ::: 1 | perl -ne '$_ > 10 and print "OK\n"' OK parallel: Warning: This job was killed because it timed out: -parallel: Warning: perl -e while\(1\)\{\ \} +parallel: Warning: perl -e 'while(1){ }' '' parallel: Warning: This job was killed because it timed out: -parallel: Warning: perl -e while\(1\)\{\ \} +parallel: Warning: perl -e 'while(1){ }' '' parallel: Warning: This job was killed because it timed out: -parallel: Warning: perl -e while\(1\)\{\ \} +parallel: Warning: perl -e 'while(1){ }' '' parallel: Warning: This job was killed because it timed out: -parallel: Warning: perl -e while\(1\)\{\ \} +parallel: Warning: perl -e 'while(1){ }' '' parallel: Warning: This job was killed because it timed out: -parallel: Warning: perl -e while\(1\)\{\ \} +parallel: Warning: perl -e 'while(1){ }' '' parallel: Warning: This job was killed because it timed out: -parallel: Warning: perl -e while\(1\)\{\ \} +parallel: Warning: perl -e 'while(1){ }' '' parallel: Warning: This job was killed because it timed out: -parallel: Warning: perl -e while\(1\)\{\ \} +parallel: Warning: perl -e 'while(1){ }' '' parallel: Warning: This job was killed because it timed out: -parallel: Warning: perl -e while\(1\)\{\ \} +parallel: Warning: perl -e 'while(1){ }' '' parallel: Warning: This job was killed because it timed out: -parallel: Warning: perl -e while\(1\)\{\ \} +parallel: Warning: perl -e 'while(1){ }' '' parallel: Warning: This job was killed because it timed out: -parallel: Warning: perl -e while\(1\)\{\ \} +parallel: Warning: perl -e 'while(1){ }' '' echo '**' ** echo '### Stop if all hosts are filtered and there are no hosts left to run on' @@ -58,10 +58,6 @@ FOO=test_csh_filter HOME=~ echo '** bug #41805 done' ** bug #41805 done -echo '### Deal with long command lines on remote servers' -### Deal with long command lines on remote servers - perl -e 'print((("\""x5000)."\n")x26)' | parallel -j1 -S lo -N 10000 echo {} |wc - 2 26 130026 echo '### Test bug #34241: --pipe should not spawn unneeded processes' ### Test bug #34241: --pipe should not spawn unneeded processes seq 5 | ssh csh@lo parallel -k --block 5 --pipe -j10 cat\\\;echo Block_end @@ -211,8 +207,8 @@ ls: cannot access 'bug46519.cc': No such file or directory ls: cannot access 'bug46519.ccc': No such file or directory echo '### Test --nice remote' ### Test --nice remote -stdout parallel --nice 1 -S lo -vv 'PAR=a bash -c "echo \$PAR {}"' ::: b | perl -pe 's/\S*parallel-server\S*/one-server/;s:[a-z/\\+=0-9]{500,}:base64:i;' -ssh 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; +stdout parallel --nice 1 -S lo -vv 'PAR=a bash -c "echo \$PAR {}"' ::: b | perl -pe 's/\S*parallel-server\S*/one-server/;s:="[0-9]+":="XXXXX":i;' +ssh lo -- exec 'perl -e '"'"'$ENV{"PARALLEL_PID"}="XXXXX";$ENV{"PARALLEL_SEQ"}="1";$bashfunc = "";@ARGV="PAR=a bash -c \"echo \\\$PAR b\"";$shell="$ENV{SHELL}";$tmpdir="/tmp/parallel-local-ssh1-tmpdir";$nice=1;do{$ENV{PARALLEL_TMP}=$tmpdir."/par".join"",map{(0..9,"a".."z","A".."Z")[rand(62)]}(1..5);}while(-e$ENV{PARALLEL_TMP});$SIG{CHLD}=sub{$done=1;};$pid=fork;unless($pid){eval{setpgrp};eval{setpriority(0,0,$nice)};exec$shell,"-c",($bashfunc."@ARGV");die"exec:$!\n";}do{$s=$s<1?0.001+$s*1.03:$s;select(undef,undef,undef,$s);}until($done||getppid==1);kill(SIGHUP,-${pid})unless$done;wait;exit($?&127?128+($?&127):1+$?>>8)'"'"; a b echo '**' ** diff --git a/testsuite/wanted-results/parallel-local-ssh2 b/testsuite/wanted-results/parallel-local-ssh2 index 828abba6..43d38e4b 100644 --- a/testsuite/wanted-results/parallel-local-ssh2 +++ b/testsuite/wanted-results/parallel-local-ssh2 @@ -90,14 +90,14 @@ par_tee_ssh 2 par_tee_ssh 3 par_tee_ssh 3 par_wd_no_such_dir ### --wd no-such-dir - csh -par_wd_no_such_dir mkdir: cannot create directory '/no-such-dir': Permission denied +par_wd_no_such_dir mkdir: cannot create directory ‘/no-such-dir’: Permission denied par_wd_no_such_dir parallel: Cannot chdir to /no-such-dir par_wd_no_such_dir Exit code 1 par_wd_no_such_dir ### --wd no-such-dir - tcsh -par_wd_no_such_dir mkdir: cannot create directory '/no-such-dir': Permission denied +par_wd_no_such_dir mkdir: cannot create directory ‘/no-such-dir’: Permission denied par_wd_no_such_dir parallel: Cannot chdir to /no-such-dir par_wd_no_such_dir Exit code 1 par_wd_no_such_dir ### --wd no-such-dir - bash -par_wd_no_such_dir mkdir: cannot create directory '/no-such-dir': Permission denied +par_wd_no_such_dir mkdir: cannot create directory ‘/no-such-dir’: Permission denied par_wd_no_such_dir parallel: Cannot chdir to /no-such-dir par_wd_no_such_dir Exit code 1 diff --git a/testsuite/wanted-results/parallel-local-ssh7 b/testsuite/wanted-results/parallel-local-ssh7 index 89fb4f45..31c57c99 100644 --- a/testsuite/wanted-results/parallel-local-ssh7 +++ b/testsuite/wanted-results/parallel-local-ssh7 @@ -127,18 +127,18 @@ par_zsh_man exit value 2 should be 2 par_zsh_man Unknown option: no-such-option par_zsh_man exit value 255 should be 255 par_zsh_funky -par_zsh_funky \\\\\\\\ par_zsh_funky  par_zsh_funky  par_zsh_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funky par_zsh_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funky par_zsh_funky space 6 par_zsh_funky space 6 +par_zsh_funky ' ' +par_zsh_funky '  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' par_zsh_funky 3 arg alias_works par_zsh_funky 3 arg alias_works_over_ssh par_zsh_funky Funky- par_zsh_funky Funky- -par_zsh_funky \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ par_zsh_funky assoc_val_a par_zsh_funky assoc_val_a par_zsh_funky function_works @@ -368,7 +368,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. @@ -474,10 +474,10 @@ par_sh_man exit value 2 should be 2 par_sh_man Unknown option: no-such-option par_sh_man exit value 255 should be 255 par_sh_funky +par_sh_funky ' ' +par_sh_funky '  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' par_sh_funky 3 arg alias_works par_sh_funky 3 arg alias_works_over_ssh -par_sh_funky \\\\\\\\ -par_sh_funky \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ par_sh_environment_too_big bug #50815: env_parallel should warn if the environment is too big par_sh_environment_too_big OK_bigvar par_sh_environment_too_big OK_bigvar_remote @@ -681,16 +681,16 @@ par_mksh_man exit value 2 should be 2 par_mksh_man Unknown option: no-such-option par_mksh_man exit value 255 should be 255 par_mksh_funky -par_mksh_funky \\\\\\\\ par_mksh_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funky par_mksh_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funky par_mksh_funky space 6 par_mksh_funky space 6 +par_mksh_funky ' ' +par_mksh_funky '  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' par_mksh_funky 3 arg alias_works par_mksh_funky 3 arg alias_works_over_ssh par_mksh_funky Funky- par_mksh_funky Funky- -par_mksh_funky \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ par_mksh_funky function_works par_mksh_funky function_works_over_ssh par_mksh_funky myvar works @@ -955,20 +955,25 @@ par_ksh_man arrays par_ksh_man with = & " ! ' par_ksh_man work, par_ksh_man too +par_ksh_man This may never work +par_ksh_man https://unix.stackexchange.com/questions/457031/extract-full-function-definitions +par_ksh_man /usr/bin/ksh: line 21: syntax error at line XXX: `{' unmatched +par_ksh_man /usr/bin/ksh: line 21: syntax error at line XXX: `{' unmatched +par_ksh_man /usr/bin/ksh: line 21: syntax error at line XXX: `{' unmatched par_ksh_man exit value 2 should be 2 par_ksh_man Unknown option: no-such-option par_ksh_man exit value 255 should be 255 par_ksh_funky -par_ksh_funky \\\\\\\\ par_ksh_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funky par_ksh_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funky par_ksh_funky space 6 par_ksh_funky space 6 +par_ksh_funky ' ' +par_ksh_funky '  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' par_ksh_funky 3 arg alias_works par_ksh_funky 3 arg alias_works_over_ssh par_ksh_funky Funky- par_ksh_funky Funky- -par_ksh_funky \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ par_ksh_funky assoc_val_a par_ksh_funky assoc_val_a par_ksh_funky function_works @@ -1125,15 +1130,15 @@ par_fish_underscore aliases and arrays in functions work par_fish_underscore aliases functions work par_fish_underscore aliases functions work par_fish_underscore ^ -par_fish_underscore in function 'myfunc' +par_fish_underscore in function “myfunc” par_fish_underscore called on standard input -par_fish_underscore with parameter list 'work' +par_fish_underscore with parameter list “work” par_fish_underscore par_fish_underscore OK if ^^^^^^^^^^^^^^^^^ no myecho par_fish_underscore ^ -par_fish_underscore in function 'myfunc' +par_fish_underscore in function “myfunc” par_fish_underscore called on standard input -par_fish_underscore with parameter list 'work' +par_fish_underscore with parameter list “work” par_fish_underscore par_fish_underscore OK if ^^^^^^^^^^^^^^^^^ no myecho par_fish_underscore ^ @@ -1218,12 +1223,14 @@ par_fish_funky par_fish_funky par_fish_funky par_fish_funky -par_fish_funky \\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\ \ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ +par_fish_funky '   !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' par_fish_environment_too_big Not implemented par_fish_env_parallel_session Not implemented par_fish_env_parallel bug #50435: Remote fifo broke in 20150522 -par_fish_env_parallel data from stdin -par_fish_env_parallel OK +par_fish_env_parallel TODO fix env_parallel --fifo +par_fish_env_parallel 'end' outside of a block +par_fish_env_parallel fish: end +par_fish_env_parallel ^ par_fish_env_parallel data from stdin par_fish_env_parallel OK par_fish_env_parallel $? is not the exit status. In fish, please use $status. @@ -1306,10 +1313,10 @@ par_dash_man exit value 2 should be 2 par_dash_man Unknown option: no-such-option par_dash_man exit value 255 should be 255 par_dash_funky +par_dash_funky ' ' +par_dash_funky '  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' par_dash_funky 3 arg alias_works par_dash_funky 3 arg alias_works_over_ssh -par_dash_funky \\\\\\\\ -par_dash_funky \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ par_dash_environment_too_big bug #50815: env_parallel should warn if the environment is too big par_dash_environment_too_big OK_bigvar par_dash_environment_too_big OK_bigvar_remote @@ -1623,21 +1630,21 @@ par_bash_man exit value 2 should be 2 par_bash_man Unknown option: no-such-option par_bash_man exit value 255 should be 255 par_bash_funky -par_bash_funky \\\\\\\\ par_bash_funky  par_bash_funky  par_bash_funky -funkymultiline par_bash_funky -funkymultiline par_bash_funky space 6 par_bash_funky space 6 +par_bash_funky ' ' +par_bash_funky ' ' +par_bash_funky '  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' par_bash_funky 3 arg alias_works par_bash_funky 3 arg alias_works_over_ssh par_bash_funky Funkyline-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funkyline par_bash_funky Funkyline-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funkyline par_bash_funky Funkymultiline- par_bash_funky Funkymultiline- -par_bash_funky \ \  -par_bash_funky \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ par_bash_funky assoc_val_a par_bash_funky assoc_val_a par_bash_funky function_works @@ -1848,10 +1855,10 @@ par_ash_man exit value 2 should be 2 par_ash_man Unknown option: no-such-option par_ash_man exit value 255 should be 255 par_ash_funky +par_ash_funky ' ' +par_ash_funky '  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' par_ash_funky 3 arg alias_works par_ash_funky 3 arg alias_works_over_ssh -par_ash_funky \\\\\\\\ -par_ash_funky \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ par_ash_environment_too_big bug #50815: env_parallel should warn if the environment is too big par_ash_environment_too_big OK_bigvar par_ash_environment_too_big OK_bigvar_remote diff --git a/testsuite/wanted-results/parallel-local-ssh8 b/testsuite/wanted-results/parallel-local-ssh8 index ac571ea8..7ada847d 100644 --- a/testsuite/wanted-results/parallel-local-ssh8 +++ b/testsuite/wanted-results/parallel-local-ssh8 @@ -1,5 +1,5 @@ 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_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_bar_m ### test --bar -m par_bar_m 0 par_bar_m 50 diff --git a/testsuite/wanted-results/parallel-local1 b/testsuite/wanted-results/parallel-local1 index 006046fc..381d3a5b 100644 --- a/testsuite/wanted-results/parallel-local1 +++ b/testsuite/wanted-results/parallel-local1 @@ -195,8 +195,8 @@ a_b_c_d echo '### Test of --trim n' ### Test of --trim n (echo 'a% c %%b'; echo a%c% b %d) | parallel -k --trim n --colsep %+ echo '"{1}_{3}_{2}_{4}"' -a_b_\ c\ _ -a_\ b\ _c_d +a_b_' c '_ +a_' b '_c_d parallel -k -C %+ echo '"{1}_{3}_{2}_{4}"' ::: 'a% c %%b' 'a%c% b %d' a_b_c_ a_b_c_d diff --git a/testsuite/wanted-results/parallel-local104 b/testsuite/wanted-results/parallel-local104 index 09a30b5d788e74f58cac269270dce33c6f8c3427..d3cf49c2024b1f8409bfd9af6df42e876b9d5eea 100644 GIT binary patch delta 116 zcmWN{$qm9V5CA|aJ>-W(I>6q;-faSEu=nU9J>ZV0DH4B}_gvexy&rdnIXFI4jrJ*8V$X1o;Sdop#ZW>=2AHB&plSsp2e0q> E1L5)`KL7v# delta 116 zcmWN}Ne#m=5CA|a9P+EwFz6ok9wbr>@p{c79BM|z6si9Pz|6H=%jfmX^dSaf+7a*& zM-T+fVc|o0?y?1k(I_ciyVt5wsFC)tOsGw0z8~|uZj?fujj<&cV>s@h0=JPj_s;Wo F{sE%{A|U_( diff --git a/testsuite/wanted-results/parallel-local105 b/testsuite/wanted-results/parallel-local105 index 9277e9e1..fe2df448 100644 --- a/testsuite/wanted-results/parallel-local105 +++ b/testsuite/wanted-results/parallel-local105 @@ -1,8 +1,8 @@ -04f23d767b301409aac59a612efcd727 - +c17a7b2d20f81d751aa627d6ba14dcc9 - There are 6246 dirs with 6246 files Removing files -643fe9e7808976565b33a6fbc932428b - +4599cfc9b33244e96b7bf5b4f40e73ea - There are 6246 dirs with files Removing dirs -7d89b0dc655b91f358a5cee5f4b2d1d7 - +28030a604f2e7381b234bbff3b13be9d - There are 1 dirs with files diff --git a/testsuite/wanted-results/parallel-local114 b/testsuite/wanted-results/parallel-local114 index 8154b28528064963e83ab06501baaccac1b4875f..92e3f986b1d85c46e56854d7512962ac98a63243 100644 GIT binary patch delta 12 UcmdlWy= 26) at input 0: +parallel: Error: Command line too long (32 >= 26) at input 0: echo '### -l -0 echo < ldata-0.xi' ### -l -0 echo < ldata-0.xi stdout xargs -l -0 echo < ldata-0.xi @@ -449,7 +449,7 @@ this plus that stdout parallel -k -t -0 echo this plus that < space.xi echo this plus that ' -'\ \ \ \ \ ' + ' this plus that @@ -1212,7 +1212,7 @@ stdsort xargs -i -s26 echo from \{\} to x{}y < items.xi from dumb to xdumby xargs: argument list too long stdsort parallel -k -i -s26 echo from \{\} to x{}y < items.xi -parallel: Error: Command line too long (36 >= 26) at input 0: +parallel: Error: Command line too long (30 >= 26) at input 0: echo '### -i__ echo FIRST __ IS OK < quotes.xi' ### -i__ echo FIRST __ IS OK < quotes.xi stdout xargs -i__ echo FIRST __ IS OK < quotes.xi @@ -1344,7 +1344,7 @@ echo this plus that this plus that stdout parallel -k -t echo this plus that < space.xi echo this plus that '' -echo this plus that \ \ \ \ \ +echo this plus that ' ' this plus that this plus that echo '### -n1 printf "@%s@\n" < empty.xi' @@ -1366,7 +1366,7 @@ foo bar echo baz ugh baz ugh stdout parallel -k -n2 -t echo < foobar.xi -echo foo\ bar baz\ +echo 'foo bar' 'baz ' echo ugh foo bar baz ugh diff --git a/testsuite/wanted-results/parallel-local15 b/testsuite/wanted-results/parallel-local15 index dd95741a..9e1612b4 100644 --- a/testsuite/wanted-results/parallel-local15 +++ b/testsuite/wanted-results/parallel-local15 @@ -41,13 +41,13 @@ ls b a a b b +ls ' ab '|wc;echo ' ab ' +ls ' ab'|wc;echo ' ab' +ls 'a b'|wc;echo 'a b' ls 1-col.txt.diff|wc;echo 1-col.txt.diff ls 1-col.txt|wc;echo 1-col.txt ls 2-col.txt.diff|wc;echo 2-col.txt.diff ls 2-col.txt|wc;echo 2-col.txt -ls \ ab\ |wc;echo \ ab\ -ls \ ab|wc;echo \ ab -ls a\ b|wc;echo a\ b ls a|wc;echo a ls b|wc;echo b ### Check that we can have more input than max procs (-j 0) - touch @@ -62,7 +62,7 @@ touch more_than_5000-9997 touch more_than_5000-9998 touch more_than_5000-9999 ### rm -ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" {}\n\"}"' | sort +ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=pQ($_)=}"\n\"}"' | sort 1 1-col.txt 1 1-col.txt.diff 1 2-col.txt @@ -171,7 +171,7 @@ ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" {}\n\" 4 ab 4 b 6 a -ls | parallel --group -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" {}\n\"}"' | sort +ls | parallel --group -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=pQ($_)=}"\n\"}"' | sort 1 1-col.txt 1 1-col.txt.diff 1 2-col.txt @@ -318,24 +318,24 @@ find . -type f | parallel -v --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARG ./a/bar.diff ./b/bar.diff ./b/bar.diff +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab /c'"'"' d/ ef"g' +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab /c'"'"' d/ ef"g.diff' +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab/c"d/ef g' +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab/c"d/ef g.diff' +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab/c"d/efg' +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab/c"d/efg.diff' +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './a b/cd / ef/efg' +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './a b/cd / ef/efg.diff' perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./1-col.txt perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./1-col.txt.diff perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./2-col.txt perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./2-col.txt.diff -perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab/c\"d/ef\ g -perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab/c\"d/ef\ g.diff -perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab/c\"d/efg -perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab/c\"d/efg.diff -perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab\ /c\'\ d/\ ef\"g -perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./\ ab\ /c\'\ d/\ ef\"g.diff perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/bar perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/bar.diff perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo.diff perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo2 perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo2.diff -perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a\ b/cd\ /\ ef/efg -perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a\ b/cd\ /\ ef/efg.diff perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/bar perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/bar.diff perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/foo @@ -477,124 +477,124 @@ find . -type f | parallel -qv --group perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\ ./a/bar.diff ./b/bar.diff ./b/bar.diff -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./1-col.txt -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./1-col.txt.diff -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./2-col.txt -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./2-col.txt.diff -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab/c\"d/ef\ g -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab/c\"d/ef\ g.diff -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab/c\"d/efg -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab/c\"d/efg.diff -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab\ /c\'\ d/\ ef\"g -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./\ ab\ /c\'\ d/\ ef\"g.diff -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/bar -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/bar.diff -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/foo -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/foo.diff -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/foo2 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a/foo2.diff -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a\ b/cd\ /\ ef/efg -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./a\ b/cd\ /\ ef/efg.diff -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./b/bar -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./b/bar.diff -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./b/foo -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./b/foo.diff -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9901 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9902 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9903 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9904 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9905 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9906 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9907 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9908 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9909 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9910 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9911 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9912 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9913 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9914 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9915 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9916 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9917 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9918 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9919 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9920 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9921 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9922 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9923 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9924 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9925 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9926 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9927 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9928 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9929 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9930 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9931 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9932 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9933 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9934 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9935 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9936 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9937 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9938 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9939 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9940 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9941 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9942 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9943 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9944 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9945 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9946 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9947 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9948 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9949 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9950 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9951 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9952 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9953 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9954 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9955 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9956 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9957 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9958 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9959 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9960 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9961 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9962 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9963 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9964 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9965 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9966 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9967 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9968 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9969 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9970 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9971 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9972 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9973 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9974 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9975 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9976 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9977 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9978 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9979 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9980 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9981 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9982 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9983 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9984 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9985 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9986 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9987 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9988 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9989 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9990 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9991 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9992 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9993 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9994 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9995 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9996 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9997 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9998 -perl -ne /\^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" ./more_than_5000-9999 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab /c'"'"' d/ ef"g' +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab /c'"'"' d/ ef"g.diff' +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab/c"d/ef g' +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab/c"d/ef g.diff' +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab/c"d/efg' +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './ ab/c"d/efg.diff' +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './a b/cd / ef/efg' +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' './a b/cd / ef/efg.diff' +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./1-col.txt +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./1-col.txt.diff +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./2-col.txt +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./2-col.txt.diff +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/bar +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/bar.diff +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo.diff +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo2 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./a/foo2.diff +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/bar +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/bar.diff +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/foo +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./b/foo.diff +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9901 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9902 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9903 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9904 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9905 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9906 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9907 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9908 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9909 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9910 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9911 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9912 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9913 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9914 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9915 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9916 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9917 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9918 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9919 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9920 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9921 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9922 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9923 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9924 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9925 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9926 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9927 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9928 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9929 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9930 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9931 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9932 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9933 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9934 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9935 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9936 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9937 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9938 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9939 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9940 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9941 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9942 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9943 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9944 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9945 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9946 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9947 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9948 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9949 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9950 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9951 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9952 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9953 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9954 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9955 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9956 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9957 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9958 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9959 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9960 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9961 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9962 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9963 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9964 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9965 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9966 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9967 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9968 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9969 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9970 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9971 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9972 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9973 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9974 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9975 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9976 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9977 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9978 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9979 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9980 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9981 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9982 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9983 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9984 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9985 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9986 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9987 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9988 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9989 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9990 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9991 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9992 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9993 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9994 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9995 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9996 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9997 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9998 +perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9999 diff --git a/testsuite/wanted-results/parallel-local150 b/testsuite/wanted-results/parallel-local150 index 9c73d198..f89e1590 100644 --- a/testsuite/wanted-results/parallel-local150 +++ b/testsuite/wanted-results/parallel-local150 @@ -210,13 +210,13 @@ echo '### Bug made 3 go before 1 2' echo '### Bug did not quote' ### Bug did not quote echo '>' | parallel -v echo -echo \> +echo '>' > parallel -v echo ::: '>' -echo \> +echo '>' > (echo '>'; echo 2) | parallel -j1 -vX echo -echo \> 2 +echo '>' 2 > 2 parallel -X -j1 echo ::: '>' 2 > 2 diff --git a/testsuite/wanted-results/parallel-local164 b/testsuite/wanted-results/parallel-local164 index 95ff1a34..5ff4c371 100644 --- a/testsuite/wanted-results/parallel-local164 +++ b/testsuite/wanted-results/parallel-local164 @@ -317,5 +317,5 @@ ls: cannot access '*.par': No such file or directory echo "bug: --gnu was ignored if env var started with space: PARALLEL=' --gnu'" bug: --gnu was ignored if env var started with space: PARALLEL=' --gnu' export PARALLEL=" -v" && parallel echo ::: 'space in envvar OK' -echo space\ in\ envvar\ OK +echo 'space in envvar OK' space in envvar OK diff --git a/testsuite/wanted-results/parallel-local18 b/testsuite/wanted-results/parallel-local18 index d26bdeb1..fa006ba9 100644 --- a/testsuite/wanted-results/parallel-local18 +++ b/testsuite/wanted-results/parallel-local18 @@ -41,5 +41,5 @@ par_space_quote a \'"b 4 par_special_char a' * ? >o o o o o o o ~/.parallel/FULLPATH; parallel -JFULLPATH echo FULLPATH ::: $0 /bin/bash=/bin/bash PARALLEL="--rpl 'FULLPATH chomp(\$_=\"/bin/bash=\".\`readlink -f \$_\`);' -v" parallel echo FULLPATH ::: $0 -echo /bin/bash\=/bin/bash +echo '/bin/bash=/bin/bash' /bin/bash=/bin/bash PARALLEL="--rpl 'FULLPATH chomp(\$_=\"/bin/bash=\".\`readlink -f \$_\`);' perl -e \'print \\\"@ARGV\\\n\\\"\' " parallel With script in \\\$PARALLEL FULLPATH ::: . With script in $PARALLEL /bin/bash=~/privat/parallel/testsuite diff --git a/testsuite/wanted-results/parallel-local7 b/testsuite/wanted-results/parallel-local7 index 8ea1963d..91327d5e 100644 --- a/testsuite/wanted-results/parallel-local7 +++ b/testsuite/wanted-results/parallel-local7 @@ -1,100 +1,58 @@ echo '### tmux-1.9' ### tmux-1.9 - seq 000 100 | PARALLEL_TMUX=tmux-1.9 par_tmux + seq 0000 10 1000 | PARALLEL_TMUX=tmux-1.9 par_tmux See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach 0 - seq 100 200 | PARALLEL_TMUX=tmux-1.9 par_tmux + seq 1001 10 2000 | PARALLEL_TMUX=tmux-1.9 par_tmux See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach 0 - seq 200 300 | PARALLEL_TMUX=tmux-1.9 par_tmux + seq 2001 10 3000 | PARALLEL_TMUX=tmux-1.9 par_tmux See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach 0 - seq 300 400 | PARALLEL_TMUX=tmux-1.9 par_tmux + seq 3001 10 4000 | PARALLEL_TMUX=tmux-1.9 par_tmux See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach 0 - seq 400 500 | PARALLEL_TMUX=tmux-1.9 par_tmux -See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach -0 - seq 500 600 | PARALLEL_TMUX=tmux-1.9 par_tmux -See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach -0 - seq 600 700 | PARALLEL_TMUX=tmux-1.9 par_tmux -See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach -0 - seq 700 800 | PARALLEL_TMUX=tmux-1.9 par_tmux -See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach -0 - seq 800 900 | PARALLEL_TMUX=tmux-1.9 par_tmux -See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach -0 - seq 900 1000 | PARALLEL_TMUX=tmux-1.9 par_tmux -See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach -0 - seq 1000 1100 | PARALLEL_TMUX=tmux-1.9 par_tmux -See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach -0 - seq 1100 1200 | PARALLEL_TMUX=tmux-1.9 par_tmux -See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach -0 - seq 1200 1300 | PARALLEL_TMUX=tmux-1.9 par_tmux -See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach -0 - seq 1300 1400 | PARALLEL_TMUX=tmux-1.9 par_tmux -See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach -0 - seq 1400 1500 | PARALLEL_TMUX=tmux-1.9 par_tmux -See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach -0 - seq 1500 1600 | PARALLEL_TMUX=tmux-1.9 par_tmux -See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach -0 - seq 1600 1700 | PARALLEL_TMUX=tmux-1.9 par_tmux -See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach -0 - seq 1700 1800 | PARALLEL_TMUX=tmux-1.9 par_tmux -See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach -0 - seq 1800 1900 | PARALLEL_TMUX=tmux-1.9 par_tmux -See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach -0 - seq 1900 2000 | PARALLEL_TMUX=tmux-1.9 par_tmux -See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach -0 - seq 2000 2018 | PARALLEL_TMUX=tmux-1.9 par_tmux + seq 4001 10 4030 | PARALLEL_TMUX=tmux-1.9 par_tmux See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach 0 echo '### tmux-1.9 fails' ### tmux-1.9 fails - echo 2019 | PARALLEL_TMUX=tmux-1.9 par_tmux -parallel: Error: Command line too long (4047 >= 4047) at input 0: 2019 + echo 4036 | PARALLEL_TMUX=tmux-1.9 par_tmux +parallel: Error: Command line too long (4047 >= 4047) at input 0: 4036 255 - echo 2020 | PARALLEL_TMUX=tmux-1.9 par_tmux -parallel: Error: Command line too long (4049 >= 4047) at input 0: 2020 + echo 4037 | PARALLEL_TMUX=tmux-1.9 par_tmux +parallel: Error: Command line too long (4048 >= 4047) at input 0: 4037 255 - echo 2021 | PARALLEL_TMUX=tmux-1.9 par_tmux -parallel: Error: Command line too long (4051 >= 4047) at input 0: 2021 + echo 4038 | PARALLEL_TMUX=tmux-1.9 par_tmux +parallel: Error: Command line too long (4049 >= 4047) at input 0: 4038 255 echo '### tmux-1.8' ### tmux-1.8 - seq 1 100 | PARALLEL_TMUX=tmux-1.8 par_tmux + seq 1 5 100 | PARALLEL_TMUX=tmux-1.8 par_tmux See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach 0 - seq 101 200 | PARALLEL_TMUX=tmux-1.8 par_tmux + seq 101 5 200 | PARALLEL_TMUX=tmux-1.8 par_tmux See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach 0 - seq 201 231 | PARALLEL_TMUX=tmux-1.8 par_tmux + seq 201 5 300 | PARALLEL_TMUX=tmux-1.8 par_tmux +See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach +0 + seq 301 5 400 | PARALLEL_TMUX=tmux-1.8 par_tmux +See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach +0 + seq 401 5 460 | PARALLEL_TMUX=tmux-1.8 par_tmux See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach 0 echo '### tmux-1.8 fails' ### tmux-1.8 fails - echo 232 | PARALLEL_TMUX=tmux-1.8 par_tmux -parallel: Error: Command line too long (472 >= 472) at input 0: 232 + echo 462 | PARALLEL_TMUX=tmux-1.8 par_tmux +parallel: Error: Command line too long (472 >= 472) at input 0: 462 255 - echo 233 | PARALLEL_TMUX=tmux-1.8 par_tmux -parallel: Error: Command line too long (474 >= 472) at input 0: 233 + echo 463 | PARALLEL_TMUX=tmux-1.8 par_tmux +parallel: Error: Command line too long (473 >= 472) at input 0: 463 255 - echo 234 | PARALLEL_TMUX=tmux-1.8 par_tmux -parallel: Error: Command line too long (476 >= 472) at input 0: 234 + echo 464 | PARALLEL_TMUX=tmux-1.8 par_tmux +parallel: Error: Command line too long (474 >= 472) at input 0: 464 255 echo '### tmux-1.8 0..255 ascii' ### tmux-1.8 0..255 ascii @@ -115,7 +73,6 @@ echo '### Test critical lengths. Must not block' ### Test critical lengths. Must not block seq 140 260 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter See output with: tmux-1.8 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach -parallel: Error: Command line too long (472 >= 472) at input 0: 232 seq 140 260 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter See output with: tmux-1.9 -S /tmp/parallel-local7-tmpdir/tmsXXXXX attach seq 560 850 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter diff --git a/testsuite/wanted-results/parallel-local9 b/testsuite/wanted-results/parallel-local9 index cf3f06cc..091bd921 100644 --- a/testsuite/wanted-results/parallel-local9 +++ b/testsuite/wanted-results/parallel-local9 @@ -64,17 +64,6 @@ echo '### Test --spreadstdin -k'; nice seq 1 1000000 | $NICEPAR -k --recend "\ echo '### Test --spreadstdin --files'; nice seq 1 1000000 | shuf | $NICEPAR --files --recend "\n" -j10 --spreadstdin sort -n | parallel -Xj1 sort -nm {} ";"rm {} | md5sum ### Test --spreadstdin --files 8a7095c1c23bfadc311fe6b16d950582 - -echo '### Test --number-of-cpus'; stdout $NICEPAR --number-of-cpus -### Test --number-of-cpus -1 -echo '### Test --number-of-cores'; stdout $NICEPAR --number-of-cores -### Test --number-of-cores -2 -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 -cores done -CPUs done echo '### Test --tag ::: a ::: b'; stdout $NICEPAR -k --tag -j1 echo stderr-{.} ">&2;" echo stdout-{} ::: a ::: b ### Test --tag ::: a ::: b a b stdout-a b @@ -313,31 +302,31 @@ b echo '### Quote test triplet 2' ### Quote test triplet 2 $XAP -kv echo :::: <(echo 'echo a'; echo 'echo b') -echo echo\ a +echo 'echo a' echo a -echo echo\ b +echo 'echo b' echo b $XAP -kv -a <(echo 'echo a'; echo 'echo b') echo -echo echo\ a +echo 'echo a' echo a -echo echo\ b +echo 'echo b' echo b (echo 'echo a'; echo 'echo b') | $XAP -kv echo -echo echo\ a +echo 'echo a' echo a -echo echo\ b +echo 'echo b' echo b echo '### Quoting if there is a command and 2 arg files' ### Quoting if there is a command and 2 arg files $XAP -kv echo :::: <(echo 'echo a') <(echo 'echo b') -echo echo\ a echo\ b +echo 'echo a' 'echo b' echo a echo b echo '### Quoting if there is a command and 2 arg files of uneven length' ### Quoting if there is a command and 2 arg files of uneven length $XAP -kv echo :::: <(echo 'echo a';echo a1) <(echo 'echo b') -echo echo\ a echo\ b +echo 'echo a' 'echo b' echo a echo b -echo a1 echo\ b +echo a1 'echo b' a1 echo b echo '### Quoting if there is no command and 2 arg files' ### Quoting if there is no command and 2 arg files