mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-22 14:07:55 +00:00
-L, -l, --max-lines, and -x pass unittest.
This commit is contained in:
parent
47153f2bae
commit
847e972912
102
doc/FUTURE_IDEAS
102
doc/FUTURE_IDEAS
|
@ -1,11 +1,97 @@
|
||||||
Ved første ssh til hosten:
|
=head1 YouTube video
|
||||||
if not -B kopieret:
|
|
||||||
kopier
|
GNU Parallel is a tool with lots of uses in shell. Every time you use
|
||||||
tilføj til cleanup
|
xargs or a for-loop GNU Parallel can probably do that faster, safer
|
||||||
|
and more readable.
|
||||||
|
|
||||||
|
If you have access to more computers through ssh, GNU Parallel makes
|
||||||
|
it easy to distribute jobs to these.
|
||||||
|
|
||||||
|
terminal2: ssh parallel@vh2.pi.dk
|
||||||
|
ssh parallel@vh2.pi.dk
|
||||||
|
|
||||||
|
|
||||||
|
PS1="\e[7mGNU Parallel:\[\033[01;34m\]\w\[\033[00m\]\e[27m$ "
|
||||||
|
gunzip logs/*gz
|
||||||
|
rm logs/*bz2
|
||||||
|
rm -rf zip/*[^p]
|
||||||
|
|
||||||
|
# GET GNU PARALLEL
|
||||||
|
wget ftp://ftp.gnu.org/gnu/parallel/parallel-20100601.tar.bz2
|
||||||
|
tar xvjf parallel-20100601.tar.bz2
|
||||||
|
cd parallel-20100601
|
||||||
|
./configure && make ##
|
||||||
|
su
|
||||||
|
make install
|
||||||
|
exit
|
||||||
|
cd
|
||||||
|
|
||||||
|
# YOUR FIRST PARALLEL JOBS
|
||||||
|
cd logs
|
||||||
|
du
|
||||||
|
/usr/bin/time gzip *
|
||||||
|
/usr/bin/time gunzip *
|
||||||
|
ls | time parallel gzip
|
||||||
|
ls | time parallel gunzip
|
||||||
|
|
||||||
|
# RECOMPRESS gz TO bz2
|
||||||
|
ls | time parallel gzip
|
||||||
|
ls *.gz | time parallel 'zcat {} | bzip2 > {.}.bz2'
|
||||||
|
## vis top local
|
||||||
|
# RECOMPRESS gz TO bz2 USING local(:) AND REMOTE server1
|
||||||
|
ls *.gz | time parallel -S server1,: --trc {.}.bz2 \
|
||||||
|
'zcat {} | bzip2 > {.}.bz2'
|
||||||
|
## vis top local
|
||||||
|
## vis top remote
|
||||||
|
|
||||||
|
# MAKING SMALL SCRIPTS
|
||||||
|
cd ../zip
|
||||||
|
ls -l
|
||||||
|
ls *.zip | parallel 'mkdir {.} && cd {.} && unzip ../{}' ###
|
||||||
|
ls -l
|
||||||
|
|
||||||
|
# GROUP OUTPUT
|
||||||
|
traceroute debian.org
|
||||||
|
traceroute debian.org & traceroute freenetproject.org ###
|
||||||
|
(echo debian.org; echo freenetproject.org) \
|
||||||
|
| parallel traceroute
|
||||||
|
|
||||||
|
# KEEP ORDER
|
||||||
|
(echo debian.org; echo freenetproject.org) \
|
||||||
|
| parallel -k traceroute
|
||||||
|
|
||||||
|
# RUN MANY JOBS. USE OUTPUT
|
||||||
|
# Find the number of hosts responding to ping
|
||||||
|
seq 1 255 | parallel -j255 ping -c 1 178.63.11.{} 2>&1 \
|
||||||
|
| grep '64 bytes' | wc -l
|
||||||
|
seq 1 255 | parallel -j0 ping -c 1 178.63.11.{} 2>&1 \
|
||||||
|
| grep '64 bytes' | wc -l
|
||||||
|
|
||||||
|
# MULTIPLE ARGUMENTS
|
||||||
|
# make dir: (1-20000).dir
|
||||||
|
cd ../dirs
|
||||||
|
rm -rf *; sync
|
||||||
|
seq 1 20000 | time parallel mkdir {}.dir
|
||||||
|
rm -rf *; sync
|
||||||
|
seq 1 20000 | time parallel -X mkdir {}.dir
|
||||||
|
|
||||||
|
# CALLING GNU PARALLEL FROM GNU PARALLEL
|
||||||
|
# make dir: top-(1-100)/sub-(1-300)
|
||||||
|
rm -rf *; sync
|
||||||
|
seq 1 100 | time parallel -I /// \
|
||||||
|
'mkdir top-///;cd top-///; seq 1 300 | parallel -X mkdir sub-{}'
|
||||||
|
find | wc -l
|
||||||
|
|
||||||
|
# Thanks for watching
|
||||||
|
# Find GNU Parallel at http://www.gnu.org/software/parallel/
|
||||||
|
|
||||||
|
# GIVE ME THE FIRST RESULT
|
||||||
|
(echo foss.org.my; echo debian.org; echo freenetproject.org) | parallel -H2 traceroute {}";false"
|
||||||
|
|
||||||
|
find . -type f | parallel -k -j150% -n 1000 -m grep -H -n STRING {}
|
||||||
|
|
||||||
|
(echo foss.org.my; echo debian.org; echo freenetproject.org) | parallel traceroute
|
||||||
|
|
||||||
Ved afslutning:
|
|
||||||
if cleanup:
|
|
||||||
for each cleanup: cleanup
|
|
||||||
|
|
||||||
=head1 IDEAS
|
=head1 IDEAS
|
||||||
|
|
||||||
|
@ -14,8 +100,6 @@ En ssh med 20% loss og 900 ms delay, så kan login nås på 15 sek.
|
||||||
|
|
||||||
Test if -0 works on filenames ending in '\n'
|
Test if -0 works on filenames ending in '\n'
|
||||||
|
|
||||||
Transfer scriptfile before first job. Remove it when last job done.
|
|
||||||
|
|
||||||
monitor to see which jobs are currently running
|
monitor to see which jobs are currently running
|
||||||
http://code.google.com/p/ppss/
|
http://code.google.com/p/ppss/
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,8 @@ echo put parallel-$YYYYMMDD.tar.bz2{,.sig,*asc} | ncftp ftp://ftp-upload.gnu.org
|
||||||
|
|
||||||
== Update Savannah ==
|
== Update Savannah ==
|
||||||
|
|
||||||
|
https://savannah.gnu.org/news/submit.php?group=parallel
|
||||||
|
|
||||||
doc/pod2savannah_publicinfo src/parallel | klipper-stdin
|
doc/pod2savannah_publicinfo src/parallel | klipper-stdin
|
||||||
https://savannah.gnu.org/project/admin/editgroupinfo.php?group=parallel
|
https://savannah.gnu.org/project/admin/editgroupinfo.php?group=parallel
|
||||||
|
|
||||||
|
|
302
src/parallel
302
src/parallel
|
@ -89,9 +89,9 @@ you use this option, stdin is given to the first process run.
|
||||||
Otherwise, stdin is redirected from /dev/null.
|
Otherwise, stdin is redirected from /dev/null.
|
||||||
|
|
||||||
|
|
||||||
=item B<--basefile> I<file>
|
=item B<--basefile> I<file> (beta testing)
|
||||||
|
|
||||||
=item B<-B> I<file>
|
=item B<-B> I<file> (beta testing)
|
||||||
|
|
||||||
I<file> will be transferred to each sshlogin before a jobs is
|
I<file> will be transferred to each sshlogin before a jobs is
|
||||||
started. It will be removed if B<--cleanup> is active. The file may be
|
started. It will be removed if B<--cleanup> is active. The file may be
|
||||||
|
@ -185,15 +185,16 @@ B<-g> is the default. Can be reversed with B<-u>.
|
||||||
Print a summary of the options to GNU B<parallel> and exit.
|
Print a summary of the options to GNU B<parallel> and exit.
|
||||||
|
|
||||||
|
|
||||||
=item B<--halt-on-error> <0|1|2>
|
=item B<--halt-on-error> <0|1|2> (beta testing)
|
||||||
|
|
||||||
=item B<-H> <0|1|2>
|
=item B<-H> <0|1|2> (beta testing)
|
||||||
|
|
||||||
=over 3
|
=over 3
|
||||||
|
|
||||||
=item 0
|
=item 0
|
||||||
|
|
||||||
Do not halt if a job fails. This is the default.
|
Do not halt if a job fails. Exit status will be the number of jobs
|
||||||
|
failed. This is the default.
|
||||||
|
|
||||||
=item 1
|
=item 1
|
||||||
|
|
||||||
|
@ -282,6 +283,23 @@ Keep sequence of output same as the order of input. If jobs 1 2 3 4
|
||||||
end in the sequence 3 1 4 2 the output will still be 1 2 3 4.
|
end in the sequence 3 1 4 2 the output will still be 1 2 3 4.
|
||||||
|
|
||||||
|
|
||||||
|
=item B<-L> I<max-lines>
|
||||||
|
|
||||||
|
Use at most I<max-lines> nonblank input lines per command line.
|
||||||
|
Trailing blanks cause an input line to be logically continued on the
|
||||||
|
next input line. Implies B<-x>.
|
||||||
|
|
||||||
|
|
||||||
|
=item B<--max-lines>[=I<max-lines>]
|
||||||
|
|
||||||
|
=item B<-l>[I<max-lines>]
|
||||||
|
|
||||||
|
Synonym for the B<-L> option. Unlike B<-L>, the I<max-lines> argument
|
||||||
|
is optional. If I<max-lines> is not specified, it defaults to one.
|
||||||
|
The B<-l> option is deprecated since the POSIX standard specifies
|
||||||
|
B<-L> instead.
|
||||||
|
|
||||||
|
|
||||||
=item B<--controlmaster> (experimental)
|
=item B<--controlmaster> (experimental)
|
||||||
|
|
||||||
=item B<-M> (experimental)
|
=item B<-M> (experimental)
|
||||||
|
@ -565,6 +583,14 @@ give surprising results if B<{}> is used as part of a word.
|
||||||
|
|
||||||
Support for B<-X> with B<--sshlogin> is limited and may fail.
|
Support for B<-X> with B<--sshlogin> is limited and may fail.
|
||||||
|
|
||||||
|
|
||||||
|
=item B<--exit>
|
||||||
|
|
||||||
|
=item B<-x>
|
||||||
|
|
||||||
|
Exit if the size (see the B<-s> option) is exceeded.
|
||||||
|
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head1 EXAMPLE: Working as xargs -n1. Argument appending
|
=head1 EXAMPLE: Working as xargs -n1. Argument appending
|
||||||
|
@ -781,6 +807,17 @@ B<(echo foss.org.my; echo debian.org; echo freenetproject.org) | parallel -k tra
|
||||||
This will make sure the traceroute to foss.org.my will be printed
|
This will make sure the traceroute to foss.org.my will be printed
|
||||||
first.
|
first.
|
||||||
|
|
||||||
|
|
||||||
|
=head1 EXAMPLE: Parallel grep
|
||||||
|
|
||||||
|
B<grep -r> greps recursively through directories. On multicore CPUs
|
||||||
|
GNU B<parallel> can often speed this up.
|
||||||
|
|
||||||
|
find . -type f | parallel -k -j150% -n 1000 -m grep -H -n STRING {}
|
||||||
|
|
||||||
|
This will run 1.5 job per core, and give 1000 arguments to B<grep>.
|
||||||
|
|
||||||
|
|
||||||
=head1 EXAMPLE: Using remote computers
|
=head1 EXAMPLE: Using remote computers
|
||||||
|
|
||||||
To run commands on a remote computer SSH needs to be set up and you
|
To run commands on a remote computer SSH needs to be set up and you
|
||||||
|
@ -1105,7 +1142,9 @@ support for running number-of-cpu-cores jobs in parallel.
|
||||||
|
|
||||||
B<xargs> has no support for grouping the output, therefore output may
|
B<xargs> has no support for grouping the output, therefore output may
|
||||||
run together, e.g. the first half of a line is from one process and
|
run together, e.g. the first half of a line is from one process and
|
||||||
the last half of the line is from another process.
|
the last half of the line is from another process. The example
|
||||||
|
B<Parallel grep> cannot be done reliably with B<xargs> because of
|
||||||
|
this.
|
||||||
|
|
||||||
B<xargs> has no support for keeping the order of the output, therefore
|
B<xargs> has no support for keeping the order of the output, therefore
|
||||||
if running jobs in parallel using B<xargs> the output of the second
|
if running jobs in parallel using B<xargs> the output of the second
|
||||||
|
@ -1152,6 +1191,12 @@ B<make -j> can run jobs in parallel, but requires a crafted Makefile
|
||||||
to do this. That results in extra quoting to get filename containing
|
to do this. That results in extra quoting to get filename containing
|
||||||
newline to work correctly.
|
newline to work correctly.
|
||||||
|
|
||||||
|
B<make -j> has no support for grouping the output, therefore output
|
||||||
|
may run together, e.g. the first half of a line is from one process
|
||||||
|
and the last half of the line is from another process. The example
|
||||||
|
B<Parallel grep> cannot be done reliably with B<make -j> because of
|
||||||
|
this.
|
||||||
|
|
||||||
(Very early versions of GNU Parallel was coincidently implemented
|
(Very early versions of GNU Parallel was coincidently implemented
|
||||||
using B<make -j>).
|
using B<make -j>).
|
||||||
|
|
||||||
|
@ -1177,7 +1222,8 @@ B<ppss> again it may cause nothing to happen as B<ppss> thinks the
|
||||||
task is already done. GNU B<parallel> will normally not need cleaning
|
task is already done. GNU B<parallel> will normally not need cleaning
|
||||||
up if running locally and will only need cleaning up if stopped
|
up if running locally and will only need cleaning up if stopped
|
||||||
abnormally and running remote (B<--cleanup> may not complete if
|
abnormally and running remote (B<--cleanup> may not complete if
|
||||||
stopped abnormally).
|
stopped abnormally). The example B<Parallel grep> would require extra
|
||||||
|
postprocessing if written using B<ppss>.
|
||||||
|
|
||||||
=head3 EXAMPLES FROM ppss MANUAL
|
=head3 EXAMPLES FROM ppss MANUAL
|
||||||
|
|
||||||
|
@ -1606,18 +1652,15 @@ sub parse_options {
|
||||||
"eof|e:s" => \$::opt_E,
|
"eof|e:s" => \$::opt_E,
|
||||||
"max-args|n=i" => \$::opt_n,
|
"max-args|n=i" => \$::opt_n,
|
||||||
"help|h" => \$::opt_help,
|
"help|h" => \$::opt_help,
|
||||||
|
"L=i" => \$::opt_L,
|
||||||
|
"max-lines|l:i" => \$::opt_l,
|
||||||
"verbose|t" => \$::opt_verbose,
|
"verbose|t" => \$::opt_verbose,
|
||||||
"version|V" => \$::opt_version,
|
"version|V" => \$::opt_version,
|
||||||
"show-limits" => \$::opt_show_limits,
|
"show-limits" => \$::opt_show_limits,
|
||||||
|
"exit|x" => \$::opt_x,
|
||||||
## xargs-compatibility - implemented, man - unittest missing
|
## xargs-compatibility - implemented, man - unittest missing
|
||||||
"interactive|p" => \$::opt_p,
|
"interactive|p" => \$::opt_p,
|
||||||
## How to unittest? tty skal emuleres
|
## How to unittest? tty must be emulated
|
||||||
# xargs-compatibility - unimplemented
|
|
||||||
"L=i" => \$::opt_L,
|
|
||||||
"max-lines|l:i" => \$::opt_l,
|
|
||||||
## (echo a b;echo c) | xargs -l1 echo
|
|
||||||
## (echo a b' ';echo c) | xargs -l1 echo
|
|
||||||
"exit|x" => \$::opt_x,
|
|
||||||
) || die_usage();
|
) || die_usage();
|
||||||
$Global::debug = (defined $::opt_D);
|
$Global::debug = (defined $::opt_D);
|
||||||
$Global::input_is_filename = (@ARGV);
|
$Global::input_is_filename = (@ARGV);
|
||||||
|
@ -1640,6 +1683,10 @@ sub parse_options {
|
||||||
if(defined $::opt_U) { $Global::replace_no_ext = $::opt_U; }
|
if(defined $::opt_U) { $Global::replace_no_ext = $::opt_U; }
|
||||||
if(defined $::opt_i and $::opt_i) { $Global::replacestring = $::opt_i; }
|
if(defined $::opt_i and $::opt_i) { $Global::replacestring = $::opt_i; }
|
||||||
if(defined $::opt_E and $::opt_E) { $Global::end_of_file_string = $::opt_E; }
|
if(defined $::opt_E and $::opt_E) { $Global::end_of_file_string = $::opt_E; }
|
||||||
|
if(defined $::opt_L and $::opt_L or defined $::opt_l) {
|
||||||
|
$Global::max_lines = $::opt_l || $::opt_L || 1;
|
||||||
|
$Global::max_number_of_args = $Global::max_lines;
|
||||||
|
}
|
||||||
if(defined $::opt_n and $::opt_n) { $Global::max_number_of_args = $::opt_n; }
|
if(defined $::opt_n and $::opt_n) { $Global::max_number_of_args = $::opt_n; }
|
||||||
if(defined $::opt_help) { die_usage(); }
|
if(defined $::opt_help) { die_usage(); }
|
||||||
if(defined $::opt_number_of_cpus) { print no_of_cpus(),"\n"; exit(0); }
|
if(defined $::opt_number_of_cpus) { print no_of_cpus(),"\n"; exit(0); }
|
||||||
|
@ -1658,7 +1705,9 @@ sub parse_options {
|
||||||
|
|
||||||
if(defined $::opt_a) {
|
if(defined $::opt_a) {
|
||||||
if(not open(ARGFILE,"<",$::opt_a)) {
|
if(not open(ARGFILE,"<",$::opt_a)) {
|
||||||
print STDERR "$Global::progname: Cannot open input file `$::opt_a': No such file or directory\n";
|
print STDERR "$Global::progname: ".
|
||||||
|
"Cannot open input file `$::opt_a': ".
|
||||||
|
"No such file or directory\n";
|
||||||
exit(255);
|
exit(255);
|
||||||
}
|
}
|
||||||
$Global::argfile = *ARGFILE;
|
$Global::argfile = *ARGFILE;
|
||||||
|
@ -1687,7 +1736,8 @@ sub parse_options {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for my $sshlogin (keys %Global::host) {
|
for my $sshlogin (keys %Global::host) {
|
||||||
$Global::host{$sshlogin}{'max_no_of_running'} = $Global::default_simultaneous_sshlogins;
|
$Global::host{$sshlogin}{'max_no_of_running'} =
|
||||||
|
$Global::default_simultaneous_sshlogins;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$Global::job_end_sequence=1;
|
$Global::job_end_sequence=1;
|
||||||
|
@ -1713,60 +1763,64 @@ sub generate_command_line {
|
||||||
my $command = shift;
|
my $command = shift;
|
||||||
my ($job_line,$last_good);
|
my ($job_line,$last_good);
|
||||||
my ($next_arg,@quoted_args,@quoted_args_no_ext,$arg_length);
|
my ($next_arg,@quoted_args,@quoted_args_no_ext,$arg_length);
|
||||||
my ($number_of_substitution,$number_of_substitution_no_ext,$length_of_context,$length_of_command_no_args,$spaces);
|
my ($number_of_substitution,
|
||||||
if($Global::xargs or $Global::Xargs) {
|
$number_of_substitution_no_ext,$spaces,
|
||||||
($number_of_substitution, $number_of_substitution_no_ext,$spaces,
|
$length_of_command_no_args,$length_of_context) =
|
||||||
$length_of_command_no_args,$length_of_context) = xargs_computations($command);
|
xargs_computations($command);
|
||||||
}
|
|
||||||
|
|
||||||
my $number_of_args = 0;
|
my $number_of_args = 0;
|
||||||
# max number of lines (-L) =
|
|
||||||
# number_of_read_lines = 0
|
|
||||||
while (defined($next_arg = get_next_arg())) {
|
while (defined($next_arg = get_next_arg())) {
|
||||||
my $next_arg_no_ext = no_extension($next_arg);
|
my $next_arg_no_ext = no_extension($next_arg);
|
||||||
# if defined max_number_of_lines
|
|
||||||
# number_of_read_lines++
|
|
||||||
# if $next_arg =~ /\w$/ then number_of_read_lines--
|
|
||||||
# Trailing blanks cause an
|
|
||||||
# input line to be logically continued on the next input line.
|
|
||||||
# if number_of_read_lines > max_number_of_lines
|
|
||||||
# last
|
|
||||||
push (@quoted_args, $next_arg);
|
push (@quoted_args, $next_arg);
|
||||||
push (@quoted_args_no_ext, $next_arg_no_ext);
|
push (@quoted_args_no_ext, $next_arg_no_ext);
|
||||||
$number_of_args++;
|
$number_of_args++;
|
||||||
|
|
||||||
|
# Emulate xargs if there is a command and -x or -X is set
|
||||||
|
my $next_arg_len =
|
||||||
|
$number_of_substitution * (length ($next_arg) + $spaces)
|
||||||
|
+ $number_of_substitution_no_ext * (length ($next_arg_no_ext) + $spaces)
|
||||||
|
+ $length_of_context;
|
||||||
|
$arg_length += $next_arg_len;
|
||||||
|
my $job_line_length = $length_of_command_no_args + $arg_length;
|
||||||
|
if($job_line_length >= max_length_of_command_line()) {
|
||||||
|
unget_arg(pop @quoted_args);
|
||||||
|
if($::opt_x and $length_of_command_no_args + $next_arg_len
|
||||||
|
>= max_length_of_command_line()) {
|
||||||
|
# To be compatible with xargs -x
|
||||||
|
print STDERR ("Command line too long ($job_line_length >= "
|
||||||
|
. max_length_of_command_line() .
|
||||||
|
") at number $number_of_args: ".
|
||||||
|
(substr($next_arg,0,50))."...\n");
|
||||||
|
exit(255);
|
||||||
|
}
|
||||||
|
if(defined $quoted_args[0]) {
|
||||||
|
last;
|
||||||
|
} else {
|
||||||
|
print STDERR ("Command line too long ($job_line_length >= "
|
||||||
|
. max_length_of_command_line() .
|
||||||
|
") at number $number_of_args: ".
|
||||||
|
(substr($next_arg,0,50))."...\n");
|
||||||
|
exit(255);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if($Global::max_number_of_args and
|
||||||
|
$number_of_args >= $Global::max_number_of_args) {
|
||||||
|
last;
|
||||||
|
}
|
||||||
if(not $Global::xargs and not $Global::Xargs) {
|
if(not $Global::xargs and not $Global::Xargs) {
|
||||||
# No xargs-mode: Just one argument per line
|
# No xargs-mode: Just one argument per line
|
||||||
last;
|
last;
|
||||||
} else {
|
|
||||||
# Emulate xargs if there is a command and -x or -X is set
|
|
||||||
my $next_arg_len = $number_of_substitution * (length ($next_arg) + $spaces) +
|
|
||||||
+ $number_of_substitution_no_ext * (length ($next_arg_no_ext) + $spaces)
|
|
||||||
+ $length_of_context;
|
|
||||||
|
|
||||||
$arg_length += $next_arg_len;
|
|
||||||
my $job_line_length = $length_of_command_no_args + $arg_length;
|
|
||||||
if($job_line_length >= max_length_of_command_line()) {
|
|
||||||
unget_arg(pop @quoted_args);
|
|
||||||
if(defined $quoted_args[0]) {
|
|
||||||
last;
|
|
||||||
} else {
|
|
||||||
die ("Command line too long ($job_line_length >= "
|
|
||||||
. max_length_of_command_line() . ") at number $number_of_args: $next_arg");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if($Global::max_number_of_args and $number_of_args >= $Global::max_number_of_args) {
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(@quoted_args) {
|
if(@quoted_args) {
|
||||||
$job_line = $command;
|
$job_line = $command;
|
||||||
if(defined $job_line and
|
if(defined $job_line and
|
||||||
($job_line =~/\Q$Global::replacestring\E/o or $job_line =~/\Q$Global::replace_no_ext\E/o)) {
|
($job_line =~/\Q$Global::replacestring\E/o or
|
||||||
|
$job_line =~/\Q$Global::replace_no_ext\E/o)) {
|
||||||
# substitute {} and {.} with args
|
# substitute {} and {.} with args
|
||||||
if($Global::Xargs) {
|
if($Global::Xargs) {
|
||||||
# Context sensitive replace (foo{}bar with fooargsbar)
|
# Context sensitive replace (foo{}bar with fooargsbar)
|
||||||
$job_line = context_replace($job_line, \@quoted_args, \@quoted_args_no_ext);
|
$job_line =
|
||||||
|
context_replace($job_line, \@quoted_args, \@quoted_args_no_ext);
|
||||||
} else {
|
} else {
|
||||||
# Normal replace {} with args and {.} with args without extension
|
# Normal replace {} with args and {.} with args without extension
|
||||||
my $arg=join(" ",@quoted_args);
|
my $arg=join(" ",@quoted_args);
|
||||||
|
@ -1793,33 +1847,37 @@ sub generate_command_line {
|
||||||
sub xargs_computations {
|
sub xargs_computations {
|
||||||
my $command = shift;
|
my $command = shift;
|
||||||
if(not @Calculated::xargs_computations) {
|
if(not @Calculated::xargs_computations) {
|
||||||
my ($length_of_command_no_args, $length_of_context, $spaces);
|
my ($number_of_substitution, $number_of_substitution_no_ext,
|
||||||
|
$spaces,$length_of_command_no_args,$length_of_context)
|
||||||
# Count number of {}'s on the command line
|
= (1,0,0,0,0);
|
||||||
my $no_of_replace = ($command =~ s/\Q$Global::replacestring\E/$Global::replacestring/go);
|
if($command) {
|
||||||
my $number_of_substitution = $no_of_replace || 1;
|
# Count number of {}'s on the command line
|
||||||
# Count number of {.}'s on the command line
|
my $no_of_replace =
|
||||||
my $no_of_no_ext = ($command =~ s/\Q$Global::replace_no_ext\E/$Global::replace_no_ext/go);
|
($command =~ s/\Q$Global::replacestring\E/$Global::replacestring/go);
|
||||||
my $number_of_substitution_no_ext = $no_of_no_ext || 0;
|
$number_of_substitution = $no_of_replace || 1;
|
||||||
# Count
|
# Count number of {.}'s on the command line
|
||||||
my $c = $command;
|
my $no_of_no_ext =
|
||||||
if($Global::xargs) {
|
($command =~ s/\Q$Global::replace_no_ext\E/$Global::replace_no_ext/go);
|
||||||
# remove all {}s
|
$number_of_substitution_no_ext = $no_of_no_ext || 0;
|
||||||
$c =~ s/\Q$Global::replacestring\E|\Q$Global::replace_no_ext\E//og;
|
# Count
|
||||||
$length_of_command_no_args = length($c) - $no_of_replace - $no_of_no_ext;
|
my $c = $command;
|
||||||
$length_of_context = 0;
|
if($Global::Xargs) {
|
||||||
$spaces = 1;
|
$c =~ s/\S*\Q$Global::replacestring\E\S*//go;
|
||||||
|
$c =~ s/\S*\Q$Global::replace_no_ext\E\S*//go;
|
||||||
|
$length_of_command_no_args = length($c) - 1;
|
||||||
|
$length_of_context = length($command) - $length_of_command_no_args
|
||||||
|
- $no_of_replace * length($Global::replacestring)
|
||||||
|
- $no_of_no_ext * length($Global::replace_no_ext);
|
||||||
|
$spaces = 0;
|
||||||
|
} else {
|
||||||
|
# remove all {}s
|
||||||
|
$c =~ s/\Q$Global::replacestring\E|\Q$Global::replace_no_ext\E//og;
|
||||||
|
$length_of_command_no_args = length($c) -
|
||||||
|
$no_of_replace - $no_of_no_ext;
|
||||||
|
$length_of_context = 0;
|
||||||
|
$spaces = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if($Global::Xargs) {
|
|
||||||
$c =~ s/\S*\Q$Global::replacestring\E\S*//go;
|
|
||||||
$c =~ s/\S*\Q$Global::replace_no_ext\E\S*//go;
|
|
||||||
$length_of_command_no_args = length($c) - 1;
|
|
||||||
$length_of_context = length($command) - $length_of_command_no_args
|
|
||||||
- $no_of_replace * length($Global::replacestring)
|
|
||||||
- $no_of_no_ext * length($Global::replace_no_ext);
|
|
||||||
$spaces = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Calculated::xargs_computations =
|
@Calculated::xargs_computations =
|
||||||
($number_of_substitution, $number_of_substitution_no_ext,
|
($number_of_substitution, $number_of_substitution_no_ext,
|
||||||
$spaces,$length_of_command_no_args,$length_of_context);
|
$spaces,$length_of_command_no_args,$length_of_context);
|
||||||
|
@ -1944,7 +2002,8 @@ sub compute_number_of_processes {
|
||||||
my $sshlogin = shift;
|
my $sshlogin = shift;
|
||||||
my $wanted_processes = user_requested_processes($opt_P,$sshlogin);
|
my $wanted_processes = user_requested_processes($opt_P,$sshlogin);
|
||||||
debug("Wanted procs: $wanted_processes\n");
|
debug("Wanted procs: $wanted_processes\n");
|
||||||
my $system_limit = processes_available_by_system_limit($wanted_processes,$sshlogin);
|
my $system_limit =
|
||||||
|
processes_available_by_system_limit($wanted_processes,$sshlogin);
|
||||||
debug("Limited to procs: $system_limit\n");
|
debug("Limited to procs: $system_limit\n");
|
||||||
return $system_limit;
|
return $system_limit;
|
||||||
}
|
}
|
||||||
|
@ -2038,8 +2097,10 @@ sub processes_available_by_system_limit {
|
||||||
wait();
|
wait();
|
||||||
# Cleanup: Unget the command_lines (and args_refs)
|
# Cleanup: Unget the command_lines (and args_refs)
|
||||||
unget_command_line(@command_lines);
|
unget_command_line(@command_lines);
|
||||||
if($sshlogin ne ":" and $system_limit > $Global::default_simultaneous_sshlogins) {
|
if($sshlogin ne ":" and
|
||||||
$system_limit = simultaneous_sshlogin_limit($sshlogin,$system_limit);
|
$system_limit > $Global::default_simultaneous_sshlogins) {
|
||||||
|
$system_limit =
|
||||||
|
simultaneous_sshlogin_limit($sshlogin,$system_limit);
|
||||||
}
|
}
|
||||||
return $system_limit;
|
return $system_limit;
|
||||||
}
|
}
|
||||||
|
@ -2067,12 +2128,17 @@ sub simultaneous_sshlogin_limit {
|
||||||
my ($sshcmd,$serverlogin) = sshcommand_of_sshlogin($sshlogin);
|
my ($sshcmd,$serverlogin) = sshcommand_of_sshlogin($sshlogin);
|
||||||
# Try twice because it guesses wrong sometimes
|
# Try twice because it guesses wrong sometimes
|
||||||
# Choose the minimal
|
# Choose the minimal
|
||||||
my $ssh_limit = min(simultaneous_sshlogin($sshlogin,$wanted_processes),
|
my $ssh_limit =
|
||||||
simultaneous_sshlogin($sshlogin,$wanted_processes));
|
min(simultaneous_sshlogin($sshlogin,$wanted_processes),
|
||||||
|
simultaneous_sshlogin($sshlogin,$wanted_processes));
|
||||||
if($ssh_limit < $wanted_processes) {
|
if($ssh_limit < $wanted_processes) {
|
||||||
print STDERR ("Warning: ssh to $serverlogin only allows for $ssh_limit simultaneous logins.\n",
|
print STDERR
|
||||||
"You may raise this by changing /etc/ssh/sshd_config:MaxStartup on $serverlogin\n",
|
("Warning: ssh to $serverlogin only allows ",
|
||||||
"Using only ",$ssh_limit-1," connections to avoid race conditions\n");
|
"for $ssh_limit simultaneous logins.\n",
|
||||||
|
"You may raise this by changing ",
|
||||||
|
"/etc/ssh/sshd_config:MaxStartup on $serverlogin\n",
|
||||||
|
"Using only ",$ssh_limit-1," connections ",
|
||||||
|
"to avoid race conditions\n");
|
||||||
}
|
}
|
||||||
# Race condition can cause problem if using all sshs.
|
# Race condition can cause problem if using all sshs.
|
||||||
if($ssh_limit > 1) { $ssh_limit -= 1; }
|
if($ssh_limit > 1) { $ssh_limit -= 1; }
|
||||||
|
@ -2106,14 +2172,17 @@ sub user_requested_processes {
|
||||||
if($opt_P =~ /^\+(\d+)$/) {
|
if($opt_P =~ /^\+(\d+)$/) {
|
||||||
# E.g. -P +2
|
# E.g. -P +2
|
||||||
my $j = $1;
|
my $j = $1;
|
||||||
$processes = $j + no_of_processing_units_sshlogin($sshlogin);
|
$processes =
|
||||||
|
$j + no_of_processing_units_sshlogin($sshlogin);
|
||||||
} elsif ($opt_P =~ /^-(\d+)$/) {
|
} elsif ($opt_P =~ /^-(\d+)$/) {
|
||||||
# E.g. -P -2
|
# E.g. -P -2
|
||||||
my $j = $1;
|
my $j = $1;
|
||||||
$processes = no_of_processing_units_sshlogin($sshlogin) - $j;
|
$processes =
|
||||||
|
no_of_processing_units_sshlogin($sshlogin) - $j;
|
||||||
} elsif ($opt_P =~ /^(\d+)\%$/) {
|
} elsif ($opt_P =~ /^(\d+)\%$/) {
|
||||||
my $j = $1;
|
my $j = $1;
|
||||||
$processes = no_of_processing_units_sshlogin($sshlogin) * $j / 100;
|
$processes =
|
||||||
|
no_of_processing_units_sshlogin($sshlogin) * $j / 100;
|
||||||
} elsif ($opt_P =~ /^(\d+)$/) {
|
} elsif ($opt_P =~ /^(\d+)$/) {
|
||||||
$processes = $1;
|
$processes = $1;
|
||||||
if($processes == 0) {
|
if($processes == 0) {
|
||||||
|
@ -2153,7 +2222,8 @@ sub no_of_processing_units_sshlogin {
|
||||||
if($ncpu =~ /^[0-9]+$/) {
|
if($ncpu =~ /^[0-9]+$/) {
|
||||||
$Global::host{$sshlogin}{'ncpus'} = $ncpu;
|
$Global::host{$sshlogin}{'ncpus'} = $ncpu;
|
||||||
} else {
|
} else {
|
||||||
print STDERR ("Warning: Could not figure out number of cpus on $serverlogin. Using 1");
|
print STDERR ("Warning: Could not figure out ",
|
||||||
|
"number of cpus on $serverlogin. Using 1");
|
||||||
$Global::host{$sshlogin}{'ncpus'} = 1;
|
$Global::host{$sshlogin}{'ncpus'} = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2164,8 +2234,7 @@ sub no_of_processing_units_sshlogin {
|
||||||
sub no_of_cpus {
|
sub no_of_cpus {
|
||||||
if(not $Global::no_of_cpus) {
|
if(not $Global::no_of_cpus) {
|
||||||
local $/="\n"; # If delimiter is set, then $/ will be wrong
|
local $/="\n"; # If delimiter is set, then $/ will be wrong
|
||||||
my $no_of_cpus = (0
|
my $no_of_cpus = (no_of_cpus_freebsd()
|
||||||
|| no_of_cpus_freebsd()
|
|
||||||
|| no_of_cpus_darwin()
|
|| no_of_cpus_darwin()
|
||||||
|| no_of_cpus_solaris()
|
|| no_of_cpus_solaris()
|
||||||
|| no_of_cpus_gnu_linux()
|
|| no_of_cpus_gnu_linux()
|
||||||
|
@ -2183,8 +2252,7 @@ sub no_of_cpus {
|
||||||
sub no_of_cores {
|
sub no_of_cores {
|
||||||
if(not $Global::no_of_cores) {
|
if(not $Global::no_of_cores) {
|
||||||
local $/="\n"; # If delimiter is set, then $/ will be wrong
|
local $/="\n"; # If delimiter is set, then $/ will be wrong
|
||||||
my $no_of_cores = (0
|
my $no_of_cores = (no_of_cores_freebsd()
|
||||||
|| no_of_cores_freebsd()
|
|
||||||
|| no_of_cores_darwin()
|
|| no_of_cores_darwin()
|
||||||
|| no_of_cores_solaris()
|
|| no_of_cores_solaris()
|
||||||
|| no_of_cores_gnu_linux()
|
|| no_of_cores_gnu_linux()
|
||||||
|
@ -2303,7 +2371,7 @@ sub min {
|
||||||
# $Global::running{$pid}{sshlogin} = server to run on
|
# $Global::running{$pid}{sshlogin} = server to run on
|
||||||
# $Global::running{$pid}{'exitstatus'} = exit status
|
# $Global::running{$pid}{'exitstatus'} = exit status
|
||||||
# $Global::host{$sshlogin}{'no_of_running'} = number of currently running jobs
|
# $Global::host{$sshlogin}{'no_of_running'} = number of currently running jobs
|
||||||
# $Global::host{$sshlogin}{'ncpus'} = number of cpus
|
# $Global::host{$sshlogin}{'ncpus'} = number of CPUs (or CPU cores)
|
||||||
# $Global::host{$sshlogin}{'maxlength'} = max line length (currently buggy for remote)
|
# $Global::host{$sshlogin}{'maxlength'} = max line length (currently buggy for remote)
|
||||||
# $Global::host{$sshlogin}{'max_no_of_running'} = number of currently running jobs
|
# $Global::host{$sshlogin}{'max_no_of_running'} = number of currently running jobs
|
||||||
# $Global::host{$sshlogin}{'sshcmd'} = command to use as ssh
|
# $Global::host{$sshlogin}{'sshcmd'} = command to use as ssh
|
||||||
|
@ -2388,7 +2456,8 @@ sub get_next_arg {
|
||||||
}
|
}
|
||||||
$arg = <$Global::argfile>;
|
$arg = <$Global::argfile>;
|
||||||
chomp $arg;
|
chomp $arg;
|
||||||
if($Global::end_of_file_string and $arg eq $Global::end_of_file_string) {
|
if($Global::end_of_file_string and
|
||||||
|
$arg eq $Global::end_of_file_string) {
|
||||||
# Ignore the rest of STDIN
|
# Ignore the rest of STDIN
|
||||||
while (<$Global::argfile>) {}
|
while (<$Global::argfile>) {}
|
||||||
return undef;
|
return undef;
|
||||||
|
@ -2398,6 +2467,12 @@ sub get_next_arg {
|
||||||
return get_next_arg();
|
return get_next_arg();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if($Global::max_lines) {
|
||||||
|
if($arg =~ /\s$/) {
|
||||||
|
# Trailing space => continued on next line
|
||||||
|
$arg .= get_next_arg();
|
||||||
|
}
|
||||||
|
}
|
||||||
if($Global::input_is_filename) {
|
if($Global::input_is_filename) {
|
||||||
$arg = shell_quote($arg);
|
$arg = shell_quote($arg);
|
||||||
}
|
}
|
||||||
|
@ -2494,8 +2569,10 @@ sub start_job {
|
||||||
close TTY;
|
close TTY;
|
||||||
my $run_yes = ($answer =~ /^\s*y/i);
|
my $run_yes = ($answer =~ /^\s*y/i);
|
||||||
if (not $run_yes) {
|
if (not $run_yes) {
|
||||||
open STDOUT, ">&", $Global::original_stdout or die "Can't dup \$oldout: $!";
|
open STDOUT, ">&", $Global::original_stdout
|
||||||
open STDERR, ">&", $Global::original_stderr or die "Can't dup \$oldout: $!";
|
or die "Can't dup \$oldout: $!";
|
||||||
|
open STDERR, ">&", $Global::original_stderr
|
||||||
|
or die "Can't dup \$oldout: $!";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -2515,14 +2592,17 @@ sub start_job {
|
||||||
$pid = open3("<&STDIN", ">&STDOUT", ">&STDERR", $command) ||
|
$pid = open3("<&STDIN", ">&STDOUT", ">&STDERR", $command) ||
|
||||||
die("open3 failed. Report a bug to <bug-parallel\@gnu.org>\n");
|
die("open3 failed. Report a bug to <bug-parallel\@gnu.org>\n");
|
||||||
# Re-open to avoid complaining
|
# Re-open to avoid complaining
|
||||||
open STDIN, "<&", $Global::original_stdin or die "Can't dup \$Global::original_stdin: $!";
|
open STDIN, "<&", $Global::original_stdin
|
||||||
|
or die "Can't dup \$Global::original_stdin: $!";
|
||||||
} else {
|
} else {
|
||||||
$pid = open3(gensym, ">&STDOUT", ">&STDERR", $command) ||
|
$pid = open3(gensym, ">&STDOUT", ">&STDERR", $command) ||
|
||||||
die("open3 failed. Report a bug to <bug-parallel\@gnu.org>\n");
|
die("open3 failed. Report a bug to <bug-parallel\@gnu.org>\n");
|
||||||
}
|
}
|
||||||
debug("started: $command\n");
|
debug("started: $command\n");
|
||||||
open STDOUT, ">&", $Global::original_stdout or die "Can't dup \$Global::original_stdout: $!";
|
open STDOUT, ">&", $Global::original_stdout
|
||||||
open STDERR, ">&", $Global::original_stderr or die "Can't dup \$Global::original_stderr: $!";
|
or die "Can't dup \$Global::original_stdout: $!";
|
||||||
|
open STDERR, ">&", $Global::original_stderr
|
||||||
|
or die "Can't dup \$Global::original_stderr: $!";
|
||||||
|
|
||||||
if($Global::grouped) {
|
if($Global::grouped) {
|
||||||
return ("seq" => $Global::job_start_sequence,
|
return ("seq" => $Global::job_start_sequence,
|
||||||
|
@ -2702,8 +2782,8 @@ sub sshtransferreturn {
|
||||||
# Use different subdirs depending on abs or rel path
|
# Use different subdirs depending on abs or rel path
|
||||||
my $rsync_destdir = ($relpath ? "./" : "/");
|
my $rsync_destdir = ($relpath ? "./" : "/");
|
||||||
if($transfer) {
|
if($transfer) {
|
||||||
# Abs path: rsync -rlDzR /home/tange/dir/subdir/file.gz server:/
|
# Abs path: rsync -rlDzRE /home/tange/dir/subdir/file.gz server:/
|
||||||
# Rel path: rsync -rlDzR ./subdir/file.gz server:./
|
# Rel path: rsync -rlDzRE ./subdir/file.gz server:./
|
||||||
if(-r shell_unquote($file)) {
|
if(-r shell_unquote($file)) {
|
||||||
return "rsync $rsync_opt $file $serverlogin:$rsync_destdir";
|
return "rsync $rsync_opt $file $serverlogin:$rsync_destdir";
|
||||||
} else {
|
} else {
|
||||||
|
@ -2720,8 +2800,8 @@ sub sshtransferreturn {
|
||||||
my $remove = $removesource ? "--remove-source-files" : "";
|
my $remove = $removesource ? "--remove-source-files" : "";
|
||||||
my $replaced = context_replace($ret_file,[$file],[$noext]);
|
my $replaced = context_replace($ret_file,[$file],[$noext]);
|
||||||
# --return
|
# --return
|
||||||
# Abs path: rsync -rlDzR server:/home/tange/dir/subdir/file.gz /
|
# Abs path: rsync -rlDzRE server:/home/tange/dir/subdir/file.gz /
|
||||||
# Rel path: rsync -rlDzR server:./subsir/file.gz ./
|
# Rel path: rsync -rlDzRE server:./subsir/file.gz ./
|
||||||
push(@cmd, "rsync $rsync_opt $remove $serverlogin:"
|
push(@cmd, "rsync $rsync_opt $remove $serverlogin:"
|
||||||
.shell_quote($replaced)." ".$rsync_destdir);
|
.shell_quote($replaced)." ".$rsync_destdir);
|
||||||
}
|
}
|
||||||
|
@ -2779,9 +2859,10 @@ sub ListRunningJobs {
|
||||||
}
|
}
|
||||||
|
|
||||||
sub StartNoNewJobs {
|
sub StartNoNewJobs {
|
||||||
print STDERR ("$Global::progname: SIGTERM received. No new jobs will be started.\n",
|
print STDERR
|
||||||
"$Global::progname: Waiting for these ", scalar(keys %Global::running),
|
("$Global::progname: SIGTERM received. No new jobs will be started.\n",
|
||||||
" jobs to finish. Send SIGTERM again to stop now.\n");
|
"$Global::progname: Waiting for these ", scalar(keys %Global::running),
|
||||||
|
" jobs to finish. Send SIGTERM again to stop now.\n");
|
||||||
ListRunningJobs();
|
ListRunningJobs();
|
||||||
$Global::StartNoNewJobs++;
|
$Global::StartNoNewJobs++;
|
||||||
$SIG{TERM} = $Global::original_sigterm;
|
$SIG{TERM} = $Global::original_sigterm;
|
||||||
|
@ -2826,7 +2907,8 @@ sub Reaper {
|
||||||
my $print_now = ($Global::running{$stiff}{'exitstatus'} and
|
my $print_now = ($Global::running{$stiff}{'exitstatus'} and
|
||||||
$::opt_halt_on_error and $::opt_halt_on_error == 2);
|
$::opt_halt_on_error and $::opt_halt_on_error == 2);
|
||||||
if($Global::keeporder and not $print_now) {
|
if($Global::keeporder and not $print_now) {
|
||||||
$Global::print_later{$Global::running{$stiff}{"seq"}} = $Global::running{$stiff};
|
$Global::print_later{$Global::running{$stiff}{"seq"}} =
|
||||||
|
$Global::running{$stiff};
|
||||||
while($Global::print_later{$Global::job_end_sequence}) {
|
while($Global::print_later{$Global::job_end_sequence}) {
|
||||||
debug("Found job end $Global::job_end_sequence");
|
debug("Found job end $Global::job_end_sequence");
|
||||||
print_job($Global::print_later{$Global::job_end_sequence});
|
print_job($Global::print_later{$Global::job_end_sequence});
|
||||||
|
|
|
@ -18,12 +18,12 @@ ls b
|
||||||
1 1 10
|
1 1 10
|
||||||
1 1 15
|
1 1 15
|
||||||
1 1 15
|
1 1 15
|
||||||
|
4 4 26
|
||||||
|
6 6 41
|
||||||
1-col.txt
|
1-col.txt
|
||||||
1-col.txt.diff
|
1-col.txt.diff
|
||||||
2-col.txt
|
2-col.txt
|
||||||
2-col.txt.diff
|
2-col.txt.diff
|
||||||
4 4 26
|
|
||||||
6 6 41
|
|
||||||
a
|
a
|
||||||
b
|
b
|
||||||
ls 1-col.txt.diff|wc;echo 1-col.txt.diff
|
ls 1-col.txt.diff|wc;echo 1-col.txt.diff
|
||||||
|
@ -32,6 +32,7 @@ ls 2-col.txt.diff|wc;echo 2-col.txt.diff
|
||||||
ls 2-col.txt|wc;echo 2-col.txt
|
ls 2-col.txt|wc;echo 2-col.txt
|
||||||
ls a|wc;echo a
|
ls a|wc;echo a
|
||||||
ls b|wc;echo b
|
ls b|wc;echo b
|
||||||
|
### Check that we can have more input than max procs (-j 0)
|
||||||
touch more_than_5000-9990
|
touch more_than_5000-9990
|
||||||
touch more_than_5000-9991
|
touch more_than_5000-9991
|
||||||
touch more_than_5000-9992
|
touch more_than_5000-9992
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
|
### This causes problems if we kill child processes
|
||||||
33bf8b2986551515cdaff5e860618098 -
|
33bf8b2986551515cdaff5e860618098 -
|
||||||
960bedf6398273937e314fb49c7b3ffa -
|
d7fb96d6a56d4347bc24930a395c431a -
|
||||||
|
### Test of xargs -m and -X
|
||||||
b35d8e49be8d94899b719c40d3f1f4bb -
|
b35d8e49be8d94899b719c40d3f1f4bb -
|
||||||
3 60000 348894
|
3 60000 348894
|
||||||
1foo bar2foo bar3 Afoo barBfoo barC
|
1foo bar2foo bar3 Afoo barBfoo barC
|
||||||
|
@ -8,5 +10,6 @@ b35d8e49be8d94899b719c40d3f1f4bb -
|
||||||
6 119994 697800
|
6 119994 697800
|
||||||
31d9274be5fdc2de59487cb05ba57776 -
|
31d9274be5fdc2de59487cb05ba57776 -
|
||||||
Chars per line: 116300
|
Chars per line: 116300
|
||||||
|
### Bug before 2009-08-26 causing regexp compile error or infinite loop
|
||||||
'a'
|
'a'
|
||||||
'a'
|
'a'
|
||||||
|
|
|
@ -1,3 +1,94 @@
|
||||||
|
### Test -L -l and --max-lines
|
||||||
|
a_b c
|
||||||
|
a_b c
|
||||||
|
a_b
|
||||||
|
c
|
||||||
|
a_b
|
||||||
|
c
|
||||||
|
a_b c
|
||||||
|
d
|
||||||
|
a_b c
|
||||||
|
d
|
||||||
|
a_b c d
|
||||||
|
e
|
||||||
|
a_b c d
|
||||||
|
e
|
||||||
|
a_b c
|
||||||
|
d
|
||||||
|
e
|
||||||
|
a_b c
|
||||||
|
d
|
||||||
|
e
|
||||||
|
a_b c d
|
||||||
|
e
|
||||||
|
a_b c d
|
||||||
|
e
|
||||||
|
a_b c
|
||||||
|
d
|
||||||
|
e
|
||||||
|
a_b c
|
||||||
|
d
|
||||||
|
e
|
||||||
|
a_b c d
|
||||||
|
e
|
||||||
|
a_b c d
|
||||||
|
e
|
||||||
|
a_b c
|
||||||
|
d
|
||||||
|
e
|
||||||
|
a_b c
|
||||||
|
d
|
||||||
|
e
|
||||||
|
### test too long args
|
||||||
|
Command line too long (1000005 >= 131071) at number 1: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
|
||||||
|
xargs: argument line too long
|
||||||
|
1 2
|
||||||
|
3 4
|
||||||
|
5 6
|
||||||
|
7 8
|
||||||
|
Command line too long (1000007 >= 10) at number 1: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
|
||||||
|
9 10
|
||||||
|
1 2
|
||||||
|
3 4
|
||||||
|
5 6
|
||||||
|
7 8
|
||||||
|
xargs: argument line too long
|
||||||
|
9 10
|
||||||
|
### Test -x
|
||||||
|
1 2
|
||||||
|
3 4
|
||||||
|
5 6
|
||||||
|
Command line too long (15 >= 10) at number 3: 12345...
|
||||||
|
7 8
|
||||||
|
1 2
|
||||||
|
3 4
|
||||||
|
5 6
|
||||||
|
xargs: argument line too long
|
||||||
|
7 8
|
||||||
|
1 2
|
||||||
|
3 4
|
||||||
|
5 6
|
||||||
|
7 8
|
||||||
|
9 10
|
||||||
|
1234
|
||||||
|
12
|
||||||
|
13
|
||||||
|
14
|
||||||
|
15
|
||||||
|
1 2
|
||||||
|
3 4
|
||||||
|
5 6
|
||||||
|
7 8
|
||||||
|
9 10
|
||||||
|
1234
|
||||||
|
12
|
||||||
|
13
|
||||||
|
14
|
||||||
|
15
|
||||||
|
### Test bugfix if no command given
|
||||||
|
Command line too long (1000002 >= 10) at number 1: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
|
||||||
|
1 2 3 4 5
|
||||||
|
### Test -a and --arg-file: Read input from file instead of stdin
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
3
|
3
|
||||||
|
@ -18,12 +109,23 @@
|
||||||
8
|
8
|
||||||
9
|
9
|
||||||
10
|
10
|
||||||
|
xargs Expect: 3 1 2
|
||||||
3
|
3
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
|
parallel Expect: 3 1 2
|
||||||
|
3
|
||||||
|
1
|
||||||
|
2
|
||||||
|
xargs Expect: 1 3 2
|
||||||
1
|
1
|
||||||
3
|
3
|
||||||
2
|
2
|
||||||
|
parallel Expect: 1 3 2
|
||||||
|
1
|
||||||
|
3
|
||||||
|
2
|
||||||
|
### Test -i and --replace: Replace with argument
|
||||||
replace
|
replace
|
||||||
replace
|
replace
|
||||||
replace
|
replace
|
||||||
|
@ -33,12 +135,15 @@ replace
|
||||||
replace
|
replace
|
||||||
replace
|
replace
|
||||||
replace
|
replace
|
||||||
|
### Test -E: Artificial end-of-file
|
||||||
|
include this
|
||||||
|
include this
|
||||||
|
### Test -e and --eof: Artificial end-of-file
|
||||||
include this
|
include this
|
||||||
include this
|
include this
|
||||||
include this
|
include this
|
||||||
include this
|
include this
|
||||||
include this
|
### Test -n and --max-args: Max number of args per line (only with -X and -m)
|
||||||
include this
|
|
||||||
line 1
|
line 1
|
||||||
line 2
|
line 2
|
||||||
line 3
|
line 3
|
||||||
|
@ -59,6 +164,7 @@ line 1 line 1
|
||||||
line 2
|
line 2
|
||||||
line 1 line 1
|
line 1 line 1
|
||||||
line 2
|
line 2
|
||||||
|
### Test --max-procs and -P: Number of processes
|
||||||
max proc 1
|
max proc 1
|
||||||
max proc 2
|
max proc 2
|
||||||
max proc 3
|
max proc 3
|
||||||
|
@ -79,6 +185,8 @@ max proc 10
|
||||||
200% proc 8
|
200% proc 8
|
||||||
200% proc 9
|
200% proc 9
|
||||||
200% proc 10
|
200% proc 10
|
||||||
|
### Test --delimiter and -d: Delimiter instead of newline
|
||||||
|
# Yes there is supposed to be an extra newline for -d N
|
||||||
This is line 1
|
This is line 1
|
||||||
This is line 2
|
This is line 2
|
||||||
This is line 3
|
This is line 3
|
||||||
|
@ -93,20 +201,26 @@ line 3
|
||||||
delimiter TAB line 1
|
delimiter TAB line 1
|
||||||
line 2
|
line 2
|
||||||
line 3
|
line 3
|
||||||
|
### Test --max-chars and -s: Max number of chars in a line
|
||||||
line 1 line 1
|
line 1 line 1
|
||||||
line 2
|
line 2
|
||||||
line 1 line 1
|
line 1 line 1
|
||||||
line 2
|
line 2
|
||||||
|
### Test --no-run-if-empty and -r: This should give no output
|
||||||
|
### Test --help and -h: Help output (just check we get the same amount of lines)
|
||||||
Output from -h and --help
|
Output from -h and --help
|
||||||
4
|
4
|
||||||
4
|
4
|
||||||
|
### Test --version: Version output (just check we get the same amount of lines)
|
||||||
7
|
7
|
||||||
|
### Test --verbose and -t
|
||||||
echo bar
|
echo bar
|
||||||
echo car
|
echo car
|
||||||
echo far
|
echo far
|
||||||
echo bar
|
echo bar
|
||||||
echo car
|
echo car
|
||||||
echo far
|
echo far
|
||||||
|
### Test --show-limits
|
||||||
Maximal size of command: 131071
|
Maximal size of command: 131071
|
||||||
Maximal used size of command: 131071
|
Maximal used size of command: 131071
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
### Test --transfer --return --cleanup
|
### Test --transfer --return --cleanup
|
||||||
|
# Create some weirdly files in /tmp
|
||||||
### --transfer - abspath
|
### --transfer - abspath
|
||||||
file1
|
file1
|
||||||
file2
|
file2
|
||||||
|
@ -93,6 +94,9 @@ good if no file
|
||||||
ls: cannot access tmp/parallel.file*: No such file or directory
|
ls: cannot access tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --return - abspath
|
### --return - abspath
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
/tmp/parallel.file/sub dir.out
|
||||||
|
/tmp/parallel.file1.out
|
||||||
/tmp/parallel.file10.out
|
/tmp/parallel.file10.out
|
||||||
/tmp/parallel.file13.out
|
/tmp/parallel.file13.out
|
||||||
/tmp/parallel.file14.out
|
/tmp/parallel.file14.out
|
||||||
|
@ -101,9 +105,8 @@ OK
|
||||||
/tmp/parallel.file17.out
|
/tmp/parallel.file17.out
|
||||||
/tmp/parallel.file18.out
|
/tmp/parallel.file18.out
|
||||||
/tmp/parallel.file19.out
|
/tmp/parallel.file19.out
|
||||||
/tmp/parallel.file1.out
|
|
||||||
/tmp/parallel.file20.out
|
|
||||||
/tmp/parallel.file2.out
|
/tmp/parallel.file2.out
|
||||||
|
/tmp/parallel.file20.out
|
||||||
/tmp/parallel.file3.out
|
/tmp/parallel.file3.out
|
||||||
/tmp/parallel.file5.out
|
/tmp/parallel.file5.out
|
||||||
/tmp/parallel.file6.out
|
/tmp/parallel.file6.out
|
||||||
|
@ -111,9 +114,10 @@ OK
|
||||||
/tmp/parallel.file8.out
|
/tmp/parallel.file8.out
|
||||||
/tmp/parallel.file9.out
|
/tmp/parallel.file9.out
|
||||||
/tmp/parallel.file>fire.out
|
/tmp/parallel.file>fire.out
|
||||||
/tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
/tmp/parallel.file/sub dir.out
|
|
||||||
### --return - relpath
|
### --return - relpath
|
||||||
|
tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
tmp/parallel.file/sub dir.out
|
||||||
|
tmp/parallel.file1.out
|
||||||
tmp/parallel.file10.out
|
tmp/parallel.file10.out
|
||||||
tmp/parallel.file13.out
|
tmp/parallel.file13.out
|
||||||
tmp/parallel.file14.out
|
tmp/parallel.file14.out
|
||||||
|
@ -122,9 +126,8 @@ tmp/parallel.file16.out
|
||||||
tmp/parallel.file17.out
|
tmp/parallel.file17.out
|
||||||
tmp/parallel.file18.out
|
tmp/parallel.file18.out
|
||||||
tmp/parallel.file19.out
|
tmp/parallel.file19.out
|
||||||
tmp/parallel.file1.out
|
|
||||||
tmp/parallel.file20.out
|
|
||||||
tmp/parallel.file2.out
|
tmp/parallel.file2.out
|
||||||
|
tmp/parallel.file20.out
|
||||||
tmp/parallel.file3.out
|
tmp/parallel.file3.out
|
||||||
tmp/parallel.file5.out
|
tmp/parallel.file5.out
|
||||||
tmp/parallel.file6.out
|
tmp/parallel.file6.out
|
||||||
|
@ -132,9 +135,13 @@ tmp/parallel.file7.out
|
||||||
tmp/parallel.file8.out
|
tmp/parallel.file8.out
|
||||||
tmp/parallel.file9.out
|
tmp/parallel.file9.out
|
||||||
tmp/parallel.file>fire.out
|
tmp/parallel.file>fire.out
|
||||||
tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
tmp/parallel.file/sub dir.out
|
|
||||||
### --return - multiple files
|
### --return - multiple files
|
||||||
|
tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
tmp/parallel.file/sub dir.file.done
|
||||||
|
tmp/parallel.file/sub dir.out
|
||||||
|
tmp/parallel.file1.file.done
|
||||||
|
tmp/parallel.file1.out
|
||||||
tmp/parallel.file10.file.done
|
tmp/parallel.file10.file.done
|
||||||
tmp/parallel.file10.out
|
tmp/parallel.file10.out
|
||||||
tmp/parallel.file13.file.done
|
tmp/parallel.file13.file.done
|
||||||
|
@ -151,12 +158,10 @@ tmp/parallel.file18.file.done
|
||||||
tmp/parallel.file18.out
|
tmp/parallel.file18.out
|
||||||
tmp/parallel.file19.file.done
|
tmp/parallel.file19.file.done
|
||||||
tmp/parallel.file19.out
|
tmp/parallel.file19.out
|
||||||
tmp/parallel.file1.file.done
|
|
||||||
tmp/parallel.file1.out
|
|
||||||
tmp/parallel.file20.file.done
|
|
||||||
tmp/parallel.file20.out
|
|
||||||
tmp/parallel.file2.file.done
|
tmp/parallel.file2.file.done
|
||||||
tmp/parallel.file2.out
|
tmp/parallel.file2.out
|
||||||
|
tmp/parallel.file20.file.done
|
||||||
|
tmp/parallel.file20.out
|
||||||
tmp/parallel.file3.file.done
|
tmp/parallel.file3.file.done
|
||||||
tmp/parallel.file3.out
|
tmp/parallel.file3.out
|
||||||
tmp/parallel.file5.file.done
|
tmp/parallel.file5.file.done
|
||||||
|
@ -171,11 +176,13 @@ tmp/parallel.file9.file.done
|
||||||
tmp/parallel.file9.out
|
tmp/parallel.file9.out
|
||||||
tmp/parallel.file>fire.file.done
|
tmp/parallel.file>fire.file.done
|
||||||
tmp/parallel.file>fire.out
|
tmp/parallel.file>fire.out
|
||||||
tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
tmp/parallel.file/sub dir.file.done
|
|
||||||
tmp/parallel.file/sub dir.out
|
|
||||||
### --return --cleanup - abspath
|
### --return --cleanup - abspath
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
/tmp/parallel.file/sub dir.file.done
|
||||||
|
/tmp/parallel.file/sub dir.out
|
||||||
|
/tmp/parallel.file1.file.done
|
||||||
|
/tmp/parallel.file1.out
|
||||||
/tmp/parallel.file10.file.done
|
/tmp/parallel.file10.file.done
|
||||||
/tmp/parallel.file10.out
|
/tmp/parallel.file10.out
|
||||||
/tmp/parallel.file13.file.done
|
/tmp/parallel.file13.file.done
|
||||||
|
@ -192,12 +199,10 @@ tmp/parallel.file/sub dir.out
|
||||||
/tmp/parallel.file18.out
|
/tmp/parallel.file18.out
|
||||||
/tmp/parallel.file19.file.done
|
/tmp/parallel.file19.file.done
|
||||||
/tmp/parallel.file19.out
|
/tmp/parallel.file19.out
|
||||||
/tmp/parallel.file1.file.done
|
|
||||||
/tmp/parallel.file1.out
|
|
||||||
/tmp/parallel.file20.file.done
|
|
||||||
/tmp/parallel.file20.out
|
|
||||||
/tmp/parallel.file2.file.done
|
/tmp/parallel.file2.file.done
|
||||||
/tmp/parallel.file2.out
|
/tmp/parallel.file2.out
|
||||||
|
/tmp/parallel.file20.file.done
|
||||||
|
/tmp/parallel.file20.out
|
||||||
/tmp/parallel.file3.file.done
|
/tmp/parallel.file3.file.done
|
||||||
/tmp/parallel.file3.out
|
/tmp/parallel.file3.out
|
||||||
/tmp/parallel.file5.file.done
|
/tmp/parallel.file5.file.done
|
||||||
|
@ -212,14 +217,16 @@ tmp/parallel.file/sub dir.out
|
||||||
/tmp/parallel.file9.out
|
/tmp/parallel.file9.out
|
||||||
/tmp/parallel.file>fire.file.done
|
/tmp/parallel.file>fire.file.done
|
||||||
/tmp/parallel.file>fire.out
|
/tmp/parallel.file>fire.out
|
||||||
/tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
/tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
/tmp/parallel.file/sub dir.file.done
|
|
||||||
/tmp/parallel.file/sub dir.out
|
|
||||||
good if no file
|
good if no file
|
||||||
ls: cannot access /tmp/parallel.file*: No such file or directory
|
ls: cannot access /tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --return --cleanup - relpath
|
### --return --cleanup - relpath
|
||||||
|
tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
tmp/parallel.file/sub dir.file.done
|
||||||
|
tmp/parallel.file/sub dir.out
|
||||||
|
tmp/parallel.file1.file.done
|
||||||
|
tmp/parallel.file1.out
|
||||||
tmp/parallel.file10.file.done
|
tmp/parallel.file10.file.done
|
||||||
tmp/parallel.file10.out
|
tmp/parallel.file10.out
|
||||||
tmp/parallel.file13.file.done
|
tmp/parallel.file13.file.done
|
||||||
|
@ -236,12 +243,10 @@ tmp/parallel.file18.file.done
|
||||||
tmp/parallel.file18.out
|
tmp/parallel.file18.out
|
||||||
tmp/parallel.file19.file.done
|
tmp/parallel.file19.file.done
|
||||||
tmp/parallel.file19.out
|
tmp/parallel.file19.out
|
||||||
tmp/parallel.file1.file.done
|
|
||||||
tmp/parallel.file1.out
|
|
||||||
tmp/parallel.file20.file.done
|
|
||||||
tmp/parallel.file20.out
|
|
||||||
tmp/parallel.file2.file.done
|
tmp/parallel.file2.file.done
|
||||||
tmp/parallel.file2.out
|
tmp/parallel.file2.out
|
||||||
|
tmp/parallel.file20.file.done
|
||||||
|
tmp/parallel.file20.out
|
||||||
tmp/parallel.file3.file.done
|
tmp/parallel.file3.file.done
|
||||||
tmp/parallel.file3.out
|
tmp/parallel.file3.out
|
||||||
tmp/parallel.file5.file.done
|
tmp/parallel.file5.file.done
|
||||||
|
@ -256,14 +261,16 @@ tmp/parallel.file9.file.done
|
||||||
tmp/parallel.file9.out
|
tmp/parallel.file9.out
|
||||||
tmp/parallel.file>fire.file.done
|
tmp/parallel.file>fire.file.done
|
||||||
tmp/parallel.file>fire.out
|
tmp/parallel.file>fire.out
|
||||||
tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
tmp/parallel.file/sub dir.file.done
|
|
||||||
tmp/parallel.file/sub dir.out
|
|
||||||
good if no file
|
good if no file
|
||||||
ls: cannot access tmp/parallel.file*: No such file or directory
|
ls: cannot access tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --return --cleanup - multiple returns
|
### --return --cleanup - multiple returns
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
/tmp/parallel.file/sub dir.file.done
|
||||||
|
/tmp/parallel.file/sub dir.out
|
||||||
|
/tmp/parallel.file1.file.done
|
||||||
|
/tmp/parallel.file1.out
|
||||||
/tmp/parallel.file10.file.done
|
/tmp/parallel.file10.file.done
|
||||||
/tmp/parallel.file10.out
|
/tmp/parallel.file10.out
|
||||||
/tmp/parallel.file13.file.done
|
/tmp/parallel.file13.file.done
|
||||||
|
@ -280,12 +287,10 @@ OK
|
||||||
/tmp/parallel.file18.out
|
/tmp/parallel.file18.out
|
||||||
/tmp/parallel.file19.file.done
|
/tmp/parallel.file19.file.done
|
||||||
/tmp/parallel.file19.out
|
/tmp/parallel.file19.out
|
||||||
/tmp/parallel.file1.file.done
|
|
||||||
/tmp/parallel.file1.out
|
|
||||||
/tmp/parallel.file20.file.done
|
|
||||||
/tmp/parallel.file20.out
|
|
||||||
/tmp/parallel.file2.file.done
|
/tmp/parallel.file2.file.done
|
||||||
/tmp/parallel.file2.out
|
/tmp/parallel.file2.out
|
||||||
|
/tmp/parallel.file20.file.done
|
||||||
|
/tmp/parallel.file20.out
|
||||||
/tmp/parallel.file3.file.done
|
/tmp/parallel.file3.file.done
|
||||||
/tmp/parallel.file3.out
|
/tmp/parallel.file3.out
|
||||||
/tmp/parallel.file5.file.done
|
/tmp/parallel.file5.file.done
|
||||||
|
@ -300,14 +305,16 @@ OK
|
||||||
/tmp/parallel.file9.out
|
/tmp/parallel.file9.out
|
||||||
/tmp/parallel.file>fire.file.done
|
/tmp/parallel.file>fire.file.done
|
||||||
/tmp/parallel.file>fire.out
|
/tmp/parallel.file>fire.out
|
||||||
/tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
/tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
/tmp/parallel.file/sub dir.file.done
|
|
||||||
/tmp/parallel.file/sub dir.out
|
|
||||||
good if no file
|
good if no file
|
||||||
ls: cannot access tmp/parallel.file*: No such file or directory
|
ls: cannot access tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --transfer --return --cleanup - abspath
|
### --transfer --return --cleanup - abspath
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
/tmp/parallel.file/sub dir.file.done
|
||||||
|
/tmp/parallel.file/sub dir.out
|
||||||
|
/tmp/parallel.file1.file.done
|
||||||
|
/tmp/parallel.file1.out
|
||||||
/tmp/parallel.file10.file.done
|
/tmp/parallel.file10.file.done
|
||||||
/tmp/parallel.file10.out
|
/tmp/parallel.file10.out
|
||||||
/tmp/parallel.file13.file.done
|
/tmp/parallel.file13.file.done
|
||||||
|
@ -324,12 +331,10 @@ OK
|
||||||
/tmp/parallel.file18.out
|
/tmp/parallel.file18.out
|
||||||
/tmp/parallel.file19.file.done
|
/tmp/parallel.file19.file.done
|
||||||
/tmp/parallel.file19.out
|
/tmp/parallel.file19.out
|
||||||
/tmp/parallel.file1.file.done
|
|
||||||
/tmp/parallel.file1.out
|
|
||||||
/tmp/parallel.file20.file.done
|
|
||||||
/tmp/parallel.file20.out
|
|
||||||
/tmp/parallel.file2.file.done
|
/tmp/parallel.file2.file.done
|
||||||
/tmp/parallel.file2.out
|
/tmp/parallel.file2.out
|
||||||
|
/tmp/parallel.file20.file.done
|
||||||
|
/tmp/parallel.file20.out
|
||||||
/tmp/parallel.file3.file.done
|
/tmp/parallel.file3.file.done
|
||||||
/tmp/parallel.file3.out
|
/tmp/parallel.file3.out
|
||||||
/tmp/parallel.file5.file.done
|
/tmp/parallel.file5.file.done
|
||||||
|
@ -344,14 +349,16 @@ OK
|
||||||
/tmp/parallel.file9.out
|
/tmp/parallel.file9.out
|
||||||
/tmp/parallel.file>fire.file.done
|
/tmp/parallel.file>fire.file.done
|
||||||
/tmp/parallel.file>fire.out
|
/tmp/parallel.file>fire.out
|
||||||
/tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
/tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
/tmp/parallel.file/sub dir.file.done
|
|
||||||
/tmp/parallel.file/sub dir.out
|
|
||||||
good if no file
|
good if no file
|
||||||
ls: cannot access /tmp/parallel.file*: No such file or directory
|
ls: cannot access /tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --transfer --return --cleanup - relpath
|
### --transfer --return --cleanup - relpath
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
/tmp/parallel.file/sub dir.file.done
|
||||||
|
/tmp/parallel.file/sub dir.out
|
||||||
|
/tmp/parallel.file1.file.done
|
||||||
|
/tmp/parallel.file1.out
|
||||||
/tmp/parallel.file10.file.done
|
/tmp/parallel.file10.file.done
|
||||||
/tmp/parallel.file10.out
|
/tmp/parallel.file10.out
|
||||||
/tmp/parallel.file13.file.done
|
/tmp/parallel.file13.file.done
|
||||||
|
@ -368,12 +375,10 @@ OK
|
||||||
/tmp/parallel.file18.out
|
/tmp/parallel.file18.out
|
||||||
/tmp/parallel.file19.file.done
|
/tmp/parallel.file19.file.done
|
||||||
/tmp/parallel.file19.out
|
/tmp/parallel.file19.out
|
||||||
/tmp/parallel.file1.file.done
|
|
||||||
/tmp/parallel.file1.out
|
|
||||||
/tmp/parallel.file20.file.done
|
|
||||||
/tmp/parallel.file20.out
|
|
||||||
/tmp/parallel.file2.file.done
|
/tmp/parallel.file2.file.done
|
||||||
/tmp/parallel.file2.out
|
/tmp/parallel.file2.out
|
||||||
|
/tmp/parallel.file20.file.done
|
||||||
|
/tmp/parallel.file20.out
|
||||||
/tmp/parallel.file3.file.done
|
/tmp/parallel.file3.file.done
|
||||||
/tmp/parallel.file3.out
|
/tmp/parallel.file3.out
|
||||||
/tmp/parallel.file5.file.done
|
/tmp/parallel.file5.file.done
|
||||||
|
@ -388,14 +393,16 @@ OK
|
||||||
/tmp/parallel.file9.out
|
/tmp/parallel.file9.out
|
||||||
/tmp/parallel.file>fire.file.done
|
/tmp/parallel.file>fire.file.done
|
||||||
/tmp/parallel.file>fire.out
|
/tmp/parallel.file>fire.out
|
||||||
/tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
/tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
/tmp/parallel.file/sub dir.file.done
|
|
||||||
/tmp/parallel.file/sub dir.out
|
|
||||||
good if no file
|
good if no file
|
||||||
ls: cannot access tmp/parallel.file*: No such file or directory
|
ls: cannot access tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --transfer --return --cleanup - multiple files
|
### --transfer --return --cleanup - multiple files
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
/tmp/parallel.file/sub dir.file.done
|
||||||
|
/tmp/parallel.file/sub dir.out
|
||||||
|
/tmp/parallel.file1.file.done
|
||||||
|
/tmp/parallel.file1.out
|
||||||
/tmp/parallel.file10.file.done
|
/tmp/parallel.file10.file.done
|
||||||
/tmp/parallel.file10.out
|
/tmp/parallel.file10.out
|
||||||
/tmp/parallel.file13.file.done
|
/tmp/parallel.file13.file.done
|
||||||
|
@ -412,12 +419,10 @@ OK
|
||||||
/tmp/parallel.file18.out
|
/tmp/parallel.file18.out
|
||||||
/tmp/parallel.file19.file.done
|
/tmp/parallel.file19.file.done
|
||||||
/tmp/parallel.file19.out
|
/tmp/parallel.file19.out
|
||||||
/tmp/parallel.file1.file.done
|
|
||||||
/tmp/parallel.file1.out
|
|
||||||
/tmp/parallel.file20.file.done
|
|
||||||
/tmp/parallel.file20.out
|
|
||||||
/tmp/parallel.file2.file.done
|
/tmp/parallel.file2.file.done
|
||||||
/tmp/parallel.file2.out
|
/tmp/parallel.file2.out
|
||||||
|
/tmp/parallel.file20.file.done
|
||||||
|
/tmp/parallel.file20.out
|
||||||
/tmp/parallel.file3.file.done
|
/tmp/parallel.file3.file.done
|
||||||
/tmp/parallel.file3.out
|
/tmp/parallel.file3.out
|
||||||
/tmp/parallel.file5.file.done
|
/tmp/parallel.file5.file.done
|
||||||
|
@ -432,13 +437,15 @@ OK
|
||||||
/tmp/parallel.file9.out
|
/tmp/parallel.file9.out
|
||||||
/tmp/parallel.file>fire.file.done
|
/tmp/parallel.file>fire.file.done
|
||||||
/tmp/parallel.file>fire.out
|
/tmp/parallel.file>fire.out
|
||||||
/tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
/tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
/tmp/parallel.file/sub dir.file.done
|
|
||||||
/tmp/parallel.file/sub dir.out
|
|
||||||
ls: cannot access tmp/parallel.file*: No such file or directory
|
ls: cannot access tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --trc - abspath
|
### --trc - abspath
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
/tmp/parallel.file/sub dir.file.done
|
||||||
|
/tmp/parallel.file/sub dir.out
|
||||||
|
/tmp/parallel.file1.file.done
|
||||||
|
/tmp/parallel.file1.out
|
||||||
/tmp/parallel.file10.file.done
|
/tmp/parallel.file10.file.done
|
||||||
/tmp/parallel.file10.out
|
/tmp/parallel.file10.out
|
||||||
/tmp/parallel.file13.file.done
|
/tmp/parallel.file13.file.done
|
||||||
|
@ -455,12 +462,10 @@ OK
|
||||||
/tmp/parallel.file18.out
|
/tmp/parallel.file18.out
|
||||||
/tmp/parallel.file19.file.done
|
/tmp/parallel.file19.file.done
|
||||||
/tmp/parallel.file19.out
|
/tmp/parallel.file19.out
|
||||||
/tmp/parallel.file1.file.done
|
|
||||||
/tmp/parallel.file1.out
|
|
||||||
/tmp/parallel.file20.file.done
|
|
||||||
/tmp/parallel.file20.out
|
|
||||||
/tmp/parallel.file2.file.done
|
/tmp/parallel.file2.file.done
|
||||||
/tmp/parallel.file2.out
|
/tmp/parallel.file2.out
|
||||||
|
/tmp/parallel.file20.file.done
|
||||||
|
/tmp/parallel.file20.out
|
||||||
/tmp/parallel.file3.file.done
|
/tmp/parallel.file3.file.done
|
||||||
/tmp/parallel.file3.out
|
/tmp/parallel.file3.out
|
||||||
/tmp/parallel.file5.file.done
|
/tmp/parallel.file5.file.done
|
||||||
|
@ -475,14 +480,16 @@ OK
|
||||||
/tmp/parallel.file9.out
|
/tmp/parallel.file9.out
|
||||||
/tmp/parallel.file>fire.file.done
|
/tmp/parallel.file>fire.file.done
|
||||||
/tmp/parallel.file>fire.out
|
/tmp/parallel.file>fire.out
|
||||||
/tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
/tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
/tmp/parallel.file/sub dir.file.done
|
|
||||||
/tmp/parallel.file/sub dir.out
|
|
||||||
good if no file
|
good if no file
|
||||||
ls: cannot access /tmp/parallel.file*: No such file or directory
|
ls: cannot access /tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --trc - relpath
|
### --trc - relpath
|
||||||
|
tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
tmp/parallel.file/sub dir.file.done
|
||||||
|
tmp/parallel.file/sub dir.out
|
||||||
|
tmp/parallel.file1.file.done
|
||||||
|
tmp/parallel.file1.out
|
||||||
tmp/parallel.file10.file.done
|
tmp/parallel.file10.file.done
|
||||||
tmp/parallel.file10.out
|
tmp/parallel.file10.out
|
||||||
tmp/parallel.file13.file.done
|
tmp/parallel.file13.file.done
|
||||||
|
@ -499,12 +506,10 @@ tmp/parallel.file18.file.done
|
||||||
tmp/parallel.file18.out
|
tmp/parallel.file18.out
|
||||||
tmp/parallel.file19.file.done
|
tmp/parallel.file19.file.done
|
||||||
tmp/parallel.file19.out
|
tmp/parallel.file19.out
|
||||||
tmp/parallel.file1.file.done
|
|
||||||
tmp/parallel.file1.out
|
|
||||||
tmp/parallel.file20.file.done
|
|
||||||
tmp/parallel.file20.out
|
|
||||||
tmp/parallel.file2.file.done
|
tmp/parallel.file2.file.done
|
||||||
tmp/parallel.file2.out
|
tmp/parallel.file2.out
|
||||||
|
tmp/parallel.file20.file.done
|
||||||
|
tmp/parallel.file20.out
|
||||||
tmp/parallel.file3.file.done
|
tmp/parallel.file3.file.done
|
||||||
tmp/parallel.file3.out
|
tmp/parallel.file3.out
|
||||||
tmp/parallel.file5.file.done
|
tmp/parallel.file5.file.done
|
||||||
|
@ -519,14 +524,16 @@ tmp/parallel.file9.file.done
|
||||||
tmp/parallel.file9.out
|
tmp/parallel.file9.out
|
||||||
tmp/parallel.file>fire.file.done
|
tmp/parallel.file>fire.file.done
|
||||||
tmp/parallel.file>fire.out
|
tmp/parallel.file>fire.out
|
||||||
tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
tmp/parallel.file/sub dir.file.done
|
|
||||||
tmp/parallel.file/sub dir.out
|
|
||||||
good if no file
|
good if no file
|
||||||
ls: cannot access tmp/parallel.file*: No such file or directory
|
ls: cannot access tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --trc - multiple files
|
### --trc - multiple files
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
/tmp/parallel.file/sub dir.file.done
|
||||||
|
/tmp/parallel.file/sub dir.out
|
||||||
|
/tmp/parallel.file1.file.done
|
||||||
|
/tmp/parallel.file1.out
|
||||||
/tmp/parallel.file10.file.done
|
/tmp/parallel.file10.file.done
|
||||||
/tmp/parallel.file10.out
|
/tmp/parallel.file10.out
|
||||||
/tmp/parallel.file13.file.done
|
/tmp/parallel.file13.file.done
|
||||||
|
@ -543,12 +550,10 @@ OK
|
||||||
/tmp/parallel.file18.out
|
/tmp/parallel.file18.out
|
||||||
/tmp/parallel.file19.file.done
|
/tmp/parallel.file19.file.done
|
||||||
/tmp/parallel.file19.out
|
/tmp/parallel.file19.out
|
||||||
/tmp/parallel.file1.file.done
|
|
||||||
/tmp/parallel.file1.out
|
|
||||||
/tmp/parallel.file20.file.done
|
|
||||||
/tmp/parallel.file20.out
|
|
||||||
/tmp/parallel.file2.file.done
|
/tmp/parallel.file2.file.done
|
||||||
/tmp/parallel.file2.out
|
/tmp/parallel.file2.out
|
||||||
|
/tmp/parallel.file20.file.done
|
||||||
|
/tmp/parallel.file20.out
|
||||||
/tmp/parallel.file3.file.done
|
/tmp/parallel.file3.file.done
|
||||||
/tmp/parallel.file3.out
|
/tmp/parallel.file3.out
|
||||||
/tmp/parallel.file5.file.done
|
/tmp/parallel.file5.file.done
|
||||||
|
@ -563,10 +568,6 @@ OK
|
||||||
/tmp/parallel.file9.out
|
/tmp/parallel.file9.out
|
||||||
/tmp/parallel.file>fire.file.done
|
/tmp/parallel.file>fire.file.done
|
||||||
/tmp/parallel.file>fire.out
|
/tmp/parallel.file>fire.out
|
||||||
/tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
/tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
/tmp/parallel.file/sub dir.file.done
|
|
||||||
/tmp/parallel.file/sub dir.out
|
|
||||||
good if no file
|
good if no file
|
||||||
ls: cannot access /tmp/parallel.file*: No such file or directory
|
ls: cannot access /tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
|
|
|
@ -75,7 +75,7 @@ OK
|
||||||
ls: cannot access tmp/parallel.file*: No such file or directory
|
ls: cannot access tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
Input for ssh
|
Input for ssh
|
||||||
parallel-server1 rsync --server -lDrRze.iLsf . ./
|
parallel-server1 rsync --server -lDErRze.iLsf . ./
|
||||||
parallel-server1 cat tmp/parallel.file.'
|
parallel-server1 cat tmp/parallel.file.'
|
||||||
'newline2 > tmp/parallel.file.'
|
'newline2 > tmp/parallel.file.'
|
||||||
'newline2.out;cat tmp/parallel.file.'
|
'newline2.out;cat tmp/parallel.file.'
|
||||||
|
@ -87,7 +87,7 @@ parallel-server1 rsync --server --sender -lDrRze.iLsf --remove-source-files . ./
|
||||||
'newline2.out2
|
'newline2.out2
|
||||||
parallel-server1 rm -f tmp/parallel.file.'
|
parallel-server1 rm -f tmp/parallel.file.'
|
||||||
'newline2
|
'newline2
|
||||||
-l parallel parallel-server2 rsync --server -lDrRze.iLsf . ./
|
-l parallel parallel-server2 rsync --server -lDErRze.iLsf . ./
|
||||||
parallel@parallel-server2 cat tmp/parallel.file.'
|
parallel@parallel-server2 cat tmp/parallel.file.'
|
||||||
'newline1 > tmp/parallel.file.'
|
'newline1 > tmp/parallel.file.'
|
||||||
'newline1.out;cat tmp/parallel.file.'
|
'newline1.out;cat tmp/parallel.file.'
|
||||||
|
|
36
unittest/actual-results/test23
Normal file
36
unittest/actual-results/test23
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
### Test --basefile + --cleanup + permissions
|
||||||
|
scriptrun 1
|
||||||
|
scriptrun 2
|
||||||
|
scriptrun 3
|
||||||
|
scriptrun 4
|
||||||
|
scriptrun 5
|
||||||
|
good if no file
|
||||||
|
ls: cannot access script: No such file or directory
|
||||||
|
OK
|
||||||
|
### Test --basefile + --sshlogin :
|
||||||
|
1
|
||||||
|
10
|
||||||
|
11
|
||||||
|
12
|
||||||
|
13
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
1
|
||||||
|
10
|
||||||
|
11
|
||||||
|
12
|
||||||
|
13
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
|
@ -14,7 +14,7 @@ ls | $PAR echo ls | sort
|
||||||
ls | $PAR -j 1 echo ls | sort
|
ls | $PAR -j 1 echo ls | sort
|
||||||
find -type f | $PAR diff {} a/foo ">"{}.diff | sort
|
find -type f | $PAR diff {} a/foo ">"{}.diff | sort
|
||||||
ls | $PAR -vg "ls {}|wc;echo {}" | sort
|
ls | $PAR -vg "ls {}|wc;echo {}" | sort
|
||||||
# Check that we can have more input than max procs (-j 0)
|
echo '### Check that we can have more input than max procs (-j 0)'
|
||||||
perl -e 'print map {"more_than_5000-$_\n" } (4000..9999)' | $PAR -vj 0 touch | sort | tail
|
perl -e 'print map {"more_than_5000-$_\n" } (4000..9999)' | $PAR -vj 0 touch | sort | tail
|
||||||
perl -e 'print map {"more_than_5000-$_\n" } (4000..9900)' | $PAR -j 0 rm | sort
|
perl -e 'print map {"more_than_5000-$_\n" } (4000..9900)' | $PAR -j 0 rm | sort
|
||||||
ls | $PAR -j500 'sleep 1; ls {} | perl -ne "END{print $..\" {}\n\"}"' | sort
|
ls | $PAR -j500 'sleep 1; ls {} | perl -ne "END{print $..\" {}\n\"}"' | sort
|
||||||
|
|
|
@ -1,23 +1,21 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
PAR=parallel
|
echo '### This causes problems if we kill child processes'
|
||||||
|
seq 1 40 | parallel -j 0 seq 1 10 | sort |md5sum
|
||||||
|
seq 1 40 | parallel -j 0 seq 1 10 '| parallel -j 3 echo' | sort |md5sum
|
||||||
|
|
||||||
# This causes problems if we kill child processes
|
echo '### Test of xargs -m and -X'
|
||||||
seq 1 40 | $PAR -j 0 seq 1 10 | sort |md5sum
|
seq 1 60000 | parallel -m echo | mop -d 4 "|sort |md5sum" "| wc"
|
||||||
seq 1 40 | $PAR -j 0 seq 1 10 '| '$PAR' -j 3 echo' | sort |md5sum
|
(echo foo;echo bar) | parallel -m echo 1{}2{}3 A{}B{}C
|
||||||
|
(echo foo;echo bar) | parallel -X echo 1{}2{}3 A{}B{}C
|
||||||
# Test of xargs
|
seq 1 60000 | parallel -m echo a{}b{}c | mop -d 4 "|sort |md5sum" "| wc"
|
||||||
seq 1 60000 | $PAR -m echo | mop -d 4 "|sort |md5sum" "| wc"
|
seq 1 60000 | parallel -m echo a{}b{}c | \
|
||||||
(echo foo;echo bar) | $PAR -m echo 1{}2{}3 A{}B{}C
|
|
||||||
(echo foo;echo bar) | $PAR -X echo 1{}2{}3 A{}B{}C
|
|
||||||
seq 1 60000 | $PAR -m echo a{}b{}c | mop -d 4 "|sort |md5sum" "| wc"
|
|
||||||
seq 1 60000 | $PAR -m echo a{}b{}c | \
|
|
||||||
mop -q "|sort |md5sum" :par
|
mop -q "|sort |md5sum" :par
|
||||||
echo -n "Chars per line: "
|
echo -n "Chars per line: "
|
||||||
CHAR=$(cat ~/.mop/:par | wc -c)
|
CHAR=$(cat ~/.mop/:par | wc -c)
|
||||||
LINES=$(cat ~/.mop/:par | wc -l)
|
LINES=$(cat ~/.mop/:par | wc -l)
|
||||||
echo "$CHAR/$LINES" | bc
|
echo "$CHAR/$LINES" | bc
|
||||||
|
|
||||||
# Bug before 2009-08-26 causing regexp compile error or infinite loop
|
echo '### Bug before 2009-08-26 causing regexp compile error or infinite loop'
|
||||||
echo a | $PAR -qX echo "'"{}"' "
|
echo a | parallel -qX echo "'"{}"' "
|
||||||
echo a | $PAR -qX echo "'{}'"
|
echo a | parallel -qX echo "'{}'"
|
||||||
|
|
|
@ -4,23 +4,58 @@
|
||||||
|
|
||||||
PAR=parallel
|
PAR=parallel
|
||||||
|
|
||||||
# Test -a and --arg-file: Read input from file instead of stdin
|
echo '### Test -L -l and --max-lines'
|
||||||
|
(echo a_b;echo c) | parallel -km -L2 echo
|
||||||
|
(echo a_b;echo c) | xargs -L2 echo
|
||||||
|
(echo a_b;echo c) | parallel -km -L1 echo
|
||||||
|
(echo a_b;echo c) | xargs -L1 echo
|
||||||
|
(echo a_b' ';echo c;echo d) | parallel -km -L1 echo
|
||||||
|
(echo a_b' ';echo c;echo d) | xargs -L1 echo
|
||||||
|
(echo a_b' ';echo c;echo d;echo e) | parallel -km -L2 echo
|
||||||
|
(echo a_b' ';echo c;echo d;echo e) | xargs -L2 echo
|
||||||
|
(echo a_b' ';echo c;echo d;echo e) | parallel -km -l echo
|
||||||
|
(echo a_b' ';echo c;echo d;echo e) | xargs -l echo
|
||||||
|
(echo a_b' ';echo c;echo d;echo e) | parallel -km -l2 echo
|
||||||
|
(echo a_b' ';echo c;echo d;echo e) | xargs -l2 echo
|
||||||
|
(echo a_b' ';echo c;echo d;echo e) | parallel -km -l1 echo
|
||||||
|
(echo a_b' ';echo c;echo d;echo e) | xargs -l1 echo
|
||||||
|
(echo a_b' ';echo c;echo d;echo e) | parallel -km --max-lines 2 echo
|
||||||
|
(echo a_b' ';echo c;echo d;echo e) | xargs --max-lines=2 echo
|
||||||
|
(echo a_b' ';echo c;echo d;echo e) | parallel -km --max-lines echo
|
||||||
|
(echo a_b' ';echo c;echo d;echo e) | xargs --max-lines echo
|
||||||
|
|
||||||
|
echo '### test too long args'
|
||||||
|
perl -e 'print "z"x1000000' | parallel echo 2>&1
|
||||||
|
perl -e 'print "z"x1000000' | xargs echo 2>&1
|
||||||
|
(seq 1 10; perl -e 'print "z"x1000000'; seq 12 15) | stdout parallel -j1 -km -s 10 echo
|
||||||
|
(seq 1 10; perl -e 'print "z"x1000000'; seq 12 15) | stdout xargs -s 10 echo
|
||||||
|
echo '### Test -x'
|
||||||
|
(seq 1 10; echo 12345; seq 12 15) | stdout parallel -j1 -km -s 10 -x echo
|
||||||
|
(seq 1 10; echo 12345; seq 12 15) | stdout xargs -s 10 -x echo
|
||||||
|
(seq 1 10; echo 1234; seq 12 15) | stdout parallel -j1 -km -s 10 -x echo
|
||||||
|
(seq 1 10; echo 1234; seq 12 15) | stdout xargs -s 10 -x echo
|
||||||
|
echo '### Test bugfix if no command given'
|
||||||
|
(echo echo; seq 1 5; perl -e 'print "z"x1000000'; seq 12 15) | stdout parallel -j1 -km -s 10
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
echo '### Test -a and --arg-file: Read input from file instead of stdin'
|
||||||
seq 1 10 >/tmp/$$
|
seq 1 10 >/tmp/$$
|
||||||
$PAR -k -a /tmp/$$ echo
|
$PAR -k -a /tmp/$$ echo
|
||||||
$PAR -k --arg-file /tmp/$$ echo
|
$PAR -k --arg-file /tmp/$$ echo
|
||||||
|
|
||||||
cd input-files/test15
|
cd input-files/test15
|
||||||
|
|
||||||
# echo 3 | xargs -P 2 -n 1 -a files cat -
|
echo 'xargs Expect: 3 1 2'
|
||||||
|
echo 3 | xargs -P 1 -n 1 -a files cat -
|
||||||
|
echo 'parallel Expect: 3 1 2'
|
||||||
echo 3 | parallel -k -P 2 -n 1 -a files cat -
|
echo 3 | parallel -k -P 2 -n 1 -a files cat -
|
||||||
# echo 3 | xargs -I {} -P 2 -n 1 -a files cat {} -
|
echo 'xargs Expect: 1 3 2'
|
||||||
# Should give:
|
echo 3 | xargs -I {} -P 1 -n 1 -a files cat {} -
|
||||||
# 3
|
echo 'parallel Expect: 1 3 2'
|
||||||
# 1
|
echo 3 | parallel -k -I {} -P 1 -n 1 -a files cat {} -
|
||||||
# 2
|
|
||||||
echo 3 | parallel -k -I {} -P 2 -n 1 -a files cat {} -
|
|
||||||
|
|
||||||
# Test -i and --replace: Replace with argument
|
echo '### Test -i and --replace: Replace with argument'
|
||||||
(echo a; echo END; echo b) | $PAR -k -i -eEND echo repl{}ce
|
(echo a; echo END; echo b) | $PAR -k -i -eEND echo repl{}ce
|
||||||
(echo a; echo END; echo b) | $PAR -k --replace -eEND echo repl{}ce
|
(echo a; echo END; echo b) | $PAR -k --replace -eEND echo repl{}ce
|
||||||
(echo a; echo END; echo b) | $PAR -k -i+ -eEND echo repl+ce
|
(echo a; echo END; echo b) | $PAR -k -i+ -eEND echo repl+ce
|
||||||
|
@ -31,17 +66,17 @@ echo 3 | parallel -k -I {} -P 2 -n 1 -a files cat {} -
|
||||||
(echo a; echo END; echo b) | $PAR -k --replace=^ -eEND echo repl^ce
|
(echo a; echo END; echo b) | $PAR -k --replace=^ -eEND echo repl^ce
|
||||||
(echo a; echo END; echo b) | $PAR -k -I^ -eEND echo repl^ce
|
(echo a; echo END; echo b) | $PAR -k -I^ -eEND echo repl^ce
|
||||||
|
|
||||||
# Test -E: Artificial end-of-file
|
echo '### Test -E: Artificial end-of-file'
|
||||||
(echo include this; echo END; echo not this) | $PAR -k -E END echo
|
(echo include this; echo END; echo not this) | $PAR -k -E END echo
|
||||||
(echo include this; echo END; echo not this) | $PAR -k -EEND echo
|
(echo include this; echo END; echo not this) | $PAR -k -EEND echo
|
||||||
|
|
||||||
# Test -e and --eof: Artificial end-of-file
|
echo '### Test -e and --eof: Artificial end-of-file'
|
||||||
(echo include this; echo END; echo not this) | $PAR -k -e END echo
|
(echo include this; echo END; echo not this) | $PAR -k -e END echo
|
||||||
(echo include this; echo END; echo not this) | $PAR -k -eEND echo
|
(echo include this; echo END; echo not this) | $PAR -k -eEND echo
|
||||||
(echo include this; echo END; echo not this) | $PAR -k --eof=END echo
|
(echo include this; echo END; echo not this) | $PAR -k --eof=END echo
|
||||||
(echo include this; echo END; echo not this) | $PAR -k --eof END echo
|
(echo include this; echo END; echo not this) | $PAR -k --eof END echo
|
||||||
|
|
||||||
# Test -n and --max-args: Max number of args per line (only with -X and -m)
|
echo '### Test -n and --max-args: Max number of args per line (only with -X and -m)'
|
||||||
(echo line 1;echo line 2;echo line 3) | $PAR -k -n1 -m echo
|
(echo line 1;echo line 2;echo line 3) | $PAR -k -n1 -m echo
|
||||||
(echo line 1;echo line 1;echo line 2) | $PAR -k -n2 -m echo
|
(echo line 1;echo line 1;echo line 2) | $PAR -k -n2 -m echo
|
||||||
(echo line 1;echo line 2;echo line 3) | $PAR -k -n1 -X echo
|
(echo line 1;echo line 2;echo line 3) | $PAR -k -n1 -X echo
|
||||||
|
@ -51,37 +86,37 @@ echo 3 | parallel -k -I {} -P 2 -n 1 -a files cat {} -
|
||||||
(echo line 1;echo line 1;echo line 2) | $PAR -k --max-args=2 -X echo
|
(echo line 1;echo line 1;echo line 2) | $PAR -k --max-args=2 -X echo
|
||||||
(echo line 1;echo line 1;echo line 2) | $PAR -k --max-args 2 -X echo
|
(echo line 1;echo line 1;echo line 2) | $PAR -k --max-args 2 -X echo
|
||||||
|
|
||||||
# Test --max-procs and -P: Number of processes
|
echo '### Test --max-procs and -P: Number of processes'
|
||||||
seq 1 10 | $PAR -k --max-procs +0 echo max proc
|
seq 1 10 | $PAR -k --max-procs +0 echo max proc
|
||||||
seq 1 10 | $PAR -k -P 200% echo 200% proc
|
seq 1 10 | $PAR -k -P 200% echo 200% proc
|
||||||
|
|
||||||
# Test --delimiter and -d: Delimiter instead of newline
|
echo '### Test --delimiter and -d: Delimiter instead of newline'
|
||||||
# Yes there is supposed to be an extra newline for -d N
|
echo '# Yes there is supposed to be an extra newline for -d N'
|
||||||
echo line 1Nline 2Nline 3 | $PAR -k -d N echo This is
|
echo line 1Nline 2Nline 3 | $PAR -k -d N echo This is
|
||||||
echo line 1Nline 2Nline 3 | $PAR -k --delimiter N echo This is
|
echo line 1Nline 2Nline 3 | $PAR -k --delimiter N echo This is
|
||||||
printf "delimiter NUL line 1\0line 2\0line 3" | $PAR -k -d '\0' echo
|
printf "delimiter NUL line 1\0line 2\0line 3" | $PAR -k -d '\0' echo
|
||||||
printf "delimiter TAB line 1\tline 2\tline 3" | $PAR -k --delimiter '\t' echo
|
printf "delimiter TAB line 1\tline 2\tline 3" | $PAR -k --delimiter '\t' echo
|
||||||
|
|
||||||
# Test --max-chars and -s: Max number of chars in a line
|
echo '### Test --max-chars and -s: Max number of chars in a line'
|
||||||
(echo line 1;echo line 1;echo line 2) | $PAR -k --max-chars 25 -X echo
|
(echo line 1;echo line 1;echo line 2) | $PAR -k --max-chars 25 -X echo
|
||||||
(echo line 1;echo line 1;echo line 2) | $PAR -k -s 25 -X echo
|
(echo line 1;echo line 1;echo line 2) | $PAR -k -s 25 -X echo
|
||||||
|
|
||||||
# Test --no-run-if-empty and -r: This should give no output
|
echo '### Test --no-run-if-empty and -r: This should give no output'
|
||||||
echo " " | $PAR -r echo
|
echo " " | $PAR -r echo
|
||||||
echo " " | $PAR --no-run-if-empty echo
|
echo " " | $PAR --no-run-if-empty echo
|
||||||
|
|
||||||
# Test --help and -h: Help output (just check we get the same amount of lines)
|
echo '### Test --help and -h: Help output (just check we get the same amount of lines)'
|
||||||
echo Output from -h and --help
|
echo Output from -h and --help
|
||||||
$PAR -h | wc -l
|
$PAR -h | wc -l
|
||||||
$PAR --help | wc -l
|
$PAR --help | wc -l
|
||||||
|
|
||||||
# Test --version: Version output (just check we get the same amount of lines)
|
echo '### Test --version: Version output (just check we get the same amount of lines)'
|
||||||
$PAR --version | wc -l
|
$PAR --version | wc -l
|
||||||
|
|
||||||
# Test --verbose and -t
|
echo '### Test --verbose and -t'
|
||||||
(echo b; echo c; echo f) | $PAR -k -t echo {}ar 2>&1 >/dev/null
|
(echo b; echo c; echo f) | $PAR -k -t echo {}ar 2>&1 >/dev/null
|
||||||
(echo b; echo c; echo f) | $PAR -k --verbose echo {}ar 2>&1 >/dev/null
|
(echo b; echo c; echo f) | $PAR -k --verbose echo {}ar 2>&1 >/dev/null
|
||||||
|
|
||||||
# Test --show-limits
|
echo '### Test --show-limits'
|
||||||
(echo b; echo c; echo f) | $PAR -k --show-limits echo {}ar
|
(echo b; echo c; echo f) | $PAR -k --show-limits echo {}ar
|
||||||
(echo b; echo c; echo f) | $PAR -k --show-limits -s 100 echo {}ar
|
(echo b; echo c; echo f) | $PAR -k --show-limits -s 100 echo {}ar
|
||||||
|
|
|
@ -5,13 +5,16 @@ PAR=parallel
|
||||||
SERVER1=parallel-server1
|
SERVER1=parallel-server1
|
||||||
SERVER2=parallel-server2
|
SERVER2=parallel-server2
|
||||||
|
|
||||||
|
# Make sure sort order is the same
|
||||||
|
export LANG=C
|
||||||
|
|
||||||
echo '### Test --transfer --return --cleanup'
|
echo '### Test --transfer --return --cleanup'
|
||||||
|
|
||||||
rm -rf /tmp/parallel.file*
|
rm -rf /tmp/parallel.file*
|
||||||
stdout ssh $SERVER1 rm -rf 'tmp/parallel.file*' '/tmp/parallel.file*'
|
stdout ssh $SERVER1 rm -rf 'tmp/parallel.file*' '/tmp/parallel.file*'
|
||||||
stdout ssh parallel@$SERVER2 rm -rf 'tmp/parallel.file*' '/tmp/parallel.file*'
|
stdout ssh parallel@$SERVER2 rm -rf 'tmp/parallel.file*' '/tmp/parallel.file*'
|
||||||
(seq 1 3;echo '>fire';seq 5 10; echo ' : & ) \n*.jpg'; echo '/./sub dir'; seq 13 20) >/tmp/test17
|
(seq 1 3;echo '>fire';seq 5 10; echo ' : & ) \n*.jpg'; echo '/./sub dir'; seq 13 20) >/tmp/test17
|
||||||
# Create some weirdly files in /tmp
|
echo '# Create some weirdly files in /tmp'
|
||||||
mkdir -p /tmp/parallel.file
|
mkdir -p /tmp/parallel.file
|
||||||
cat /tmp/test17 | $PAR -k echo file{} '>'/tmp/parallel.file{}.file
|
cat /tmp/test17 | $PAR -k echo file{} '>'/tmp/parallel.file{}.file
|
||||||
cat /tmp/test17 | $PAR -k echo /tmp/parallel.file{}.file >/tmp/test17abs
|
cat /tmp/test17 | $PAR -k echo /tmp/parallel.file{}.file >/tmp/test17abs
|
||||||
|
|
25
unittest/tests-to-run/test23.sh
Normal file
25
unittest/tests-to-run/test23.sh
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
PAR=parallel
|
||||||
|
SERVER1=parallel-server1
|
||||||
|
SERVER2=parallel-server2
|
||||||
|
|
||||||
|
cd /tmp
|
||||||
|
(
|
||||||
|
echo '### Test --basefile + --cleanup + permissions'
|
||||||
|
echo echo scriptrun '"$@"' > script
|
||||||
|
chmod 755 script
|
||||||
|
seq 1 5 | parallel -kS $SERVER1 --cleanup -B script ./script
|
||||||
|
echo good if no file
|
||||||
|
stdout ssh $SERVER1 ls 'script' || echo OK
|
||||||
|
|
||||||
|
echo '### Test --basefile + --sshlogin :'
|
||||||
|
echo cat '"$@"' > my_script
|
||||||
|
chmod 755 my_script
|
||||||
|
rm -f parallel_*.test parallel_*.out
|
||||||
|
seq 1 13 | parallel echo {} '>' parallel_{}.test
|
||||||
|
|
||||||
|
ls parallel_*.test | parallel -j+0 --trc {.}.out -B my_script \
|
||||||
|
-S parallel-server1,parallel@parallel-server2,: "./my_script {} > {.}.out"
|
||||||
|
cat parallel_*.test parallel_*.out
|
||||||
|
)
|
|
@ -18,12 +18,12 @@ ls b
|
||||||
1 1 10
|
1 1 10
|
||||||
1 1 15
|
1 1 15
|
||||||
1 1 15
|
1 1 15
|
||||||
|
4 4 26
|
||||||
|
6 6 41
|
||||||
1-col.txt
|
1-col.txt
|
||||||
1-col.txt.diff
|
1-col.txt.diff
|
||||||
2-col.txt
|
2-col.txt
|
||||||
2-col.txt.diff
|
2-col.txt.diff
|
||||||
4 4 26
|
|
||||||
6 6 41
|
|
||||||
a
|
a
|
||||||
b
|
b
|
||||||
ls 1-col.txt.diff|wc;echo 1-col.txt.diff
|
ls 1-col.txt.diff|wc;echo 1-col.txt.diff
|
||||||
|
@ -32,6 +32,7 @@ ls 2-col.txt.diff|wc;echo 2-col.txt.diff
|
||||||
ls 2-col.txt|wc;echo 2-col.txt
|
ls 2-col.txt|wc;echo 2-col.txt
|
||||||
ls a|wc;echo a
|
ls a|wc;echo a
|
||||||
ls b|wc;echo b
|
ls b|wc;echo b
|
||||||
|
### Check that we can have more input than max procs (-j 0)
|
||||||
touch more_than_5000-9990
|
touch more_than_5000-9990
|
||||||
touch more_than_5000-9991
|
touch more_than_5000-9991
|
||||||
touch more_than_5000-9992
|
touch more_than_5000-9992
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
|
### This causes problems if we kill child processes
|
||||||
33bf8b2986551515cdaff5e860618098 -
|
33bf8b2986551515cdaff5e860618098 -
|
||||||
960bedf6398273937e314fb49c7b3ffa -
|
d7fb96d6a56d4347bc24930a395c431a -
|
||||||
|
### Test of xargs -m and -X
|
||||||
b35d8e49be8d94899b719c40d3f1f4bb -
|
b35d8e49be8d94899b719c40d3f1f4bb -
|
||||||
3 60000 348894
|
3 60000 348894
|
||||||
1foo bar2foo bar3 Afoo barBfoo barC
|
1foo bar2foo bar3 Afoo barBfoo barC
|
||||||
|
@ -8,5 +10,6 @@ b35d8e49be8d94899b719c40d3f1f4bb -
|
||||||
6 119994 697800
|
6 119994 697800
|
||||||
31d9274be5fdc2de59487cb05ba57776 -
|
31d9274be5fdc2de59487cb05ba57776 -
|
||||||
Chars per line: 116300
|
Chars per line: 116300
|
||||||
|
### Bug before 2009-08-26 causing regexp compile error or infinite loop
|
||||||
'a'
|
'a'
|
||||||
'a'
|
'a'
|
||||||
|
|
|
@ -1,3 +1,94 @@
|
||||||
|
### Test -L -l and --max-lines
|
||||||
|
a_b c
|
||||||
|
a_b c
|
||||||
|
a_b
|
||||||
|
c
|
||||||
|
a_b
|
||||||
|
c
|
||||||
|
a_b c
|
||||||
|
d
|
||||||
|
a_b c
|
||||||
|
d
|
||||||
|
a_b c d
|
||||||
|
e
|
||||||
|
a_b c d
|
||||||
|
e
|
||||||
|
a_b c
|
||||||
|
d
|
||||||
|
e
|
||||||
|
a_b c
|
||||||
|
d
|
||||||
|
e
|
||||||
|
a_b c d
|
||||||
|
e
|
||||||
|
a_b c d
|
||||||
|
e
|
||||||
|
a_b c
|
||||||
|
d
|
||||||
|
e
|
||||||
|
a_b c
|
||||||
|
d
|
||||||
|
e
|
||||||
|
a_b c d
|
||||||
|
e
|
||||||
|
a_b c d
|
||||||
|
e
|
||||||
|
a_b c
|
||||||
|
d
|
||||||
|
e
|
||||||
|
a_b c
|
||||||
|
d
|
||||||
|
e
|
||||||
|
### test too long args
|
||||||
|
Command line too long (1000005 >= 131071) at number 1: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
|
||||||
|
xargs: argument line too long
|
||||||
|
1 2
|
||||||
|
3 4
|
||||||
|
5 6
|
||||||
|
7 8
|
||||||
|
Command line too long (1000007 >= 10) at number 1: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
|
||||||
|
9 10
|
||||||
|
1 2
|
||||||
|
3 4
|
||||||
|
5 6
|
||||||
|
7 8
|
||||||
|
xargs: argument line too long
|
||||||
|
9 10
|
||||||
|
### Test -x
|
||||||
|
1 2
|
||||||
|
3 4
|
||||||
|
5 6
|
||||||
|
Command line too long (15 >= 10) at number 3: 12345...
|
||||||
|
7 8
|
||||||
|
1 2
|
||||||
|
3 4
|
||||||
|
5 6
|
||||||
|
xargs: argument line too long
|
||||||
|
7 8
|
||||||
|
1 2
|
||||||
|
3 4
|
||||||
|
5 6
|
||||||
|
7 8
|
||||||
|
9 10
|
||||||
|
1234
|
||||||
|
12
|
||||||
|
13
|
||||||
|
14
|
||||||
|
15
|
||||||
|
1 2
|
||||||
|
3 4
|
||||||
|
5 6
|
||||||
|
7 8
|
||||||
|
9 10
|
||||||
|
1234
|
||||||
|
12
|
||||||
|
13
|
||||||
|
14
|
||||||
|
15
|
||||||
|
### Test bugfix if no command given
|
||||||
|
Command line too long (1000002 >= 10) at number 1: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
|
||||||
|
1 2 3 4 5
|
||||||
|
### Test -a and --arg-file: Read input from file instead of stdin
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
3
|
3
|
||||||
|
@ -18,12 +109,23 @@
|
||||||
8
|
8
|
||||||
9
|
9
|
||||||
10
|
10
|
||||||
|
xargs Expect: 3 1 2
|
||||||
3
|
3
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
|
parallel Expect: 3 1 2
|
||||||
|
3
|
||||||
|
1
|
||||||
|
2
|
||||||
|
xargs Expect: 1 3 2
|
||||||
1
|
1
|
||||||
3
|
3
|
||||||
2
|
2
|
||||||
|
parallel Expect: 1 3 2
|
||||||
|
1
|
||||||
|
3
|
||||||
|
2
|
||||||
|
### Test -i and --replace: Replace with argument
|
||||||
replace
|
replace
|
||||||
replace
|
replace
|
||||||
replace
|
replace
|
||||||
|
@ -33,12 +135,15 @@ replace
|
||||||
replace
|
replace
|
||||||
replace
|
replace
|
||||||
replace
|
replace
|
||||||
|
### Test -E: Artificial end-of-file
|
||||||
|
include this
|
||||||
|
include this
|
||||||
|
### Test -e and --eof: Artificial end-of-file
|
||||||
include this
|
include this
|
||||||
include this
|
include this
|
||||||
include this
|
include this
|
||||||
include this
|
include this
|
||||||
include this
|
### Test -n and --max-args: Max number of args per line (only with -X and -m)
|
||||||
include this
|
|
||||||
line 1
|
line 1
|
||||||
line 2
|
line 2
|
||||||
line 3
|
line 3
|
||||||
|
@ -59,6 +164,7 @@ line 1 line 1
|
||||||
line 2
|
line 2
|
||||||
line 1 line 1
|
line 1 line 1
|
||||||
line 2
|
line 2
|
||||||
|
### Test --max-procs and -P: Number of processes
|
||||||
max proc 1
|
max proc 1
|
||||||
max proc 2
|
max proc 2
|
||||||
max proc 3
|
max proc 3
|
||||||
|
@ -79,6 +185,8 @@ max proc 10
|
||||||
200% proc 8
|
200% proc 8
|
||||||
200% proc 9
|
200% proc 9
|
||||||
200% proc 10
|
200% proc 10
|
||||||
|
### Test --delimiter and -d: Delimiter instead of newline
|
||||||
|
# Yes there is supposed to be an extra newline for -d N
|
||||||
This is line 1
|
This is line 1
|
||||||
This is line 2
|
This is line 2
|
||||||
This is line 3
|
This is line 3
|
||||||
|
@ -93,20 +201,26 @@ line 3
|
||||||
delimiter TAB line 1
|
delimiter TAB line 1
|
||||||
line 2
|
line 2
|
||||||
line 3
|
line 3
|
||||||
|
### Test --max-chars and -s: Max number of chars in a line
|
||||||
line 1 line 1
|
line 1 line 1
|
||||||
line 2
|
line 2
|
||||||
line 1 line 1
|
line 1 line 1
|
||||||
line 2
|
line 2
|
||||||
|
### Test --no-run-if-empty and -r: This should give no output
|
||||||
|
### Test --help and -h: Help output (just check we get the same amount of lines)
|
||||||
Output from -h and --help
|
Output from -h and --help
|
||||||
4
|
4
|
||||||
4
|
4
|
||||||
|
### Test --version: Version output (just check we get the same amount of lines)
|
||||||
7
|
7
|
||||||
|
### Test --verbose and -t
|
||||||
echo bar
|
echo bar
|
||||||
echo car
|
echo car
|
||||||
echo far
|
echo far
|
||||||
echo bar
|
echo bar
|
||||||
echo car
|
echo car
|
||||||
echo far
|
echo far
|
||||||
|
### Test --show-limits
|
||||||
Maximal size of command: 131071
|
Maximal size of command: 131071
|
||||||
Maximal used size of command: 131071
|
Maximal used size of command: 131071
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
### Test --transfer --return --cleanup
|
### Test --transfer --return --cleanup
|
||||||
|
# Create some weirdly files in /tmp
|
||||||
### --transfer - abspath
|
### --transfer - abspath
|
||||||
file1
|
file1
|
||||||
file2
|
file2
|
||||||
|
@ -93,6 +94,9 @@ good if no file
|
||||||
ls: cannot access tmp/parallel.file*: No such file or directory
|
ls: cannot access tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --return - abspath
|
### --return - abspath
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
/tmp/parallel.file/sub dir.out
|
||||||
|
/tmp/parallel.file1.out
|
||||||
/tmp/parallel.file10.out
|
/tmp/parallel.file10.out
|
||||||
/tmp/parallel.file13.out
|
/tmp/parallel.file13.out
|
||||||
/tmp/parallel.file14.out
|
/tmp/parallel.file14.out
|
||||||
|
@ -101,9 +105,8 @@ OK
|
||||||
/tmp/parallel.file17.out
|
/tmp/parallel.file17.out
|
||||||
/tmp/parallel.file18.out
|
/tmp/parallel.file18.out
|
||||||
/tmp/parallel.file19.out
|
/tmp/parallel.file19.out
|
||||||
/tmp/parallel.file1.out
|
|
||||||
/tmp/parallel.file20.out
|
|
||||||
/tmp/parallel.file2.out
|
/tmp/parallel.file2.out
|
||||||
|
/tmp/parallel.file20.out
|
||||||
/tmp/parallel.file3.out
|
/tmp/parallel.file3.out
|
||||||
/tmp/parallel.file5.out
|
/tmp/parallel.file5.out
|
||||||
/tmp/parallel.file6.out
|
/tmp/parallel.file6.out
|
||||||
|
@ -111,9 +114,10 @@ OK
|
||||||
/tmp/parallel.file8.out
|
/tmp/parallel.file8.out
|
||||||
/tmp/parallel.file9.out
|
/tmp/parallel.file9.out
|
||||||
/tmp/parallel.file>fire.out
|
/tmp/parallel.file>fire.out
|
||||||
/tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
/tmp/parallel.file/sub dir.out
|
|
||||||
### --return - relpath
|
### --return - relpath
|
||||||
|
tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
tmp/parallel.file/sub dir.out
|
||||||
|
tmp/parallel.file1.out
|
||||||
tmp/parallel.file10.out
|
tmp/parallel.file10.out
|
||||||
tmp/parallel.file13.out
|
tmp/parallel.file13.out
|
||||||
tmp/parallel.file14.out
|
tmp/parallel.file14.out
|
||||||
|
@ -122,9 +126,8 @@ tmp/parallel.file16.out
|
||||||
tmp/parallel.file17.out
|
tmp/parallel.file17.out
|
||||||
tmp/parallel.file18.out
|
tmp/parallel.file18.out
|
||||||
tmp/parallel.file19.out
|
tmp/parallel.file19.out
|
||||||
tmp/parallel.file1.out
|
|
||||||
tmp/parallel.file20.out
|
|
||||||
tmp/parallel.file2.out
|
tmp/parallel.file2.out
|
||||||
|
tmp/parallel.file20.out
|
||||||
tmp/parallel.file3.out
|
tmp/parallel.file3.out
|
||||||
tmp/parallel.file5.out
|
tmp/parallel.file5.out
|
||||||
tmp/parallel.file6.out
|
tmp/parallel.file6.out
|
||||||
|
@ -132,9 +135,13 @@ tmp/parallel.file7.out
|
||||||
tmp/parallel.file8.out
|
tmp/parallel.file8.out
|
||||||
tmp/parallel.file9.out
|
tmp/parallel.file9.out
|
||||||
tmp/parallel.file>fire.out
|
tmp/parallel.file>fire.out
|
||||||
tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
tmp/parallel.file/sub dir.out
|
|
||||||
### --return - multiple files
|
### --return - multiple files
|
||||||
|
tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
tmp/parallel.file/sub dir.file.done
|
||||||
|
tmp/parallel.file/sub dir.out
|
||||||
|
tmp/parallel.file1.file.done
|
||||||
|
tmp/parallel.file1.out
|
||||||
tmp/parallel.file10.file.done
|
tmp/parallel.file10.file.done
|
||||||
tmp/parallel.file10.out
|
tmp/parallel.file10.out
|
||||||
tmp/parallel.file13.file.done
|
tmp/parallel.file13.file.done
|
||||||
|
@ -151,12 +158,10 @@ tmp/parallel.file18.file.done
|
||||||
tmp/parallel.file18.out
|
tmp/parallel.file18.out
|
||||||
tmp/parallel.file19.file.done
|
tmp/parallel.file19.file.done
|
||||||
tmp/parallel.file19.out
|
tmp/parallel.file19.out
|
||||||
tmp/parallel.file1.file.done
|
|
||||||
tmp/parallel.file1.out
|
|
||||||
tmp/parallel.file20.file.done
|
|
||||||
tmp/parallel.file20.out
|
|
||||||
tmp/parallel.file2.file.done
|
tmp/parallel.file2.file.done
|
||||||
tmp/parallel.file2.out
|
tmp/parallel.file2.out
|
||||||
|
tmp/parallel.file20.file.done
|
||||||
|
tmp/parallel.file20.out
|
||||||
tmp/parallel.file3.file.done
|
tmp/parallel.file3.file.done
|
||||||
tmp/parallel.file3.out
|
tmp/parallel.file3.out
|
||||||
tmp/parallel.file5.file.done
|
tmp/parallel.file5.file.done
|
||||||
|
@ -171,11 +176,13 @@ tmp/parallel.file9.file.done
|
||||||
tmp/parallel.file9.out
|
tmp/parallel.file9.out
|
||||||
tmp/parallel.file>fire.file.done
|
tmp/parallel.file>fire.file.done
|
||||||
tmp/parallel.file>fire.out
|
tmp/parallel.file>fire.out
|
||||||
tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
tmp/parallel.file/sub dir.file.done
|
|
||||||
tmp/parallel.file/sub dir.out
|
|
||||||
### --return --cleanup - abspath
|
### --return --cleanup - abspath
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
/tmp/parallel.file/sub dir.file.done
|
||||||
|
/tmp/parallel.file/sub dir.out
|
||||||
|
/tmp/parallel.file1.file.done
|
||||||
|
/tmp/parallel.file1.out
|
||||||
/tmp/parallel.file10.file.done
|
/tmp/parallel.file10.file.done
|
||||||
/tmp/parallel.file10.out
|
/tmp/parallel.file10.out
|
||||||
/tmp/parallel.file13.file.done
|
/tmp/parallel.file13.file.done
|
||||||
|
@ -192,12 +199,10 @@ tmp/parallel.file/sub dir.out
|
||||||
/tmp/parallel.file18.out
|
/tmp/parallel.file18.out
|
||||||
/tmp/parallel.file19.file.done
|
/tmp/parallel.file19.file.done
|
||||||
/tmp/parallel.file19.out
|
/tmp/parallel.file19.out
|
||||||
/tmp/parallel.file1.file.done
|
|
||||||
/tmp/parallel.file1.out
|
|
||||||
/tmp/parallel.file20.file.done
|
|
||||||
/tmp/parallel.file20.out
|
|
||||||
/tmp/parallel.file2.file.done
|
/tmp/parallel.file2.file.done
|
||||||
/tmp/parallel.file2.out
|
/tmp/parallel.file2.out
|
||||||
|
/tmp/parallel.file20.file.done
|
||||||
|
/tmp/parallel.file20.out
|
||||||
/tmp/parallel.file3.file.done
|
/tmp/parallel.file3.file.done
|
||||||
/tmp/parallel.file3.out
|
/tmp/parallel.file3.out
|
||||||
/tmp/parallel.file5.file.done
|
/tmp/parallel.file5.file.done
|
||||||
|
@ -212,14 +217,16 @@ tmp/parallel.file/sub dir.out
|
||||||
/tmp/parallel.file9.out
|
/tmp/parallel.file9.out
|
||||||
/tmp/parallel.file>fire.file.done
|
/tmp/parallel.file>fire.file.done
|
||||||
/tmp/parallel.file>fire.out
|
/tmp/parallel.file>fire.out
|
||||||
/tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
/tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
/tmp/parallel.file/sub dir.file.done
|
|
||||||
/tmp/parallel.file/sub dir.out
|
|
||||||
good if no file
|
good if no file
|
||||||
ls: cannot access /tmp/parallel.file*: No such file or directory
|
ls: cannot access /tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --return --cleanup - relpath
|
### --return --cleanup - relpath
|
||||||
|
tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
tmp/parallel.file/sub dir.file.done
|
||||||
|
tmp/parallel.file/sub dir.out
|
||||||
|
tmp/parallel.file1.file.done
|
||||||
|
tmp/parallel.file1.out
|
||||||
tmp/parallel.file10.file.done
|
tmp/parallel.file10.file.done
|
||||||
tmp/parallel.file10.out
|
tmp/parallel.file10.out
|
||||||
tmp/parallel.file13.file.done
|
tmp/parallel.file13.file.done
|
||||||
|
@ -236,12 +243,10 @@ tmp/parallel.file18.file.done
|
||||||
tmp/parallel.file18.out
|
tmp/parallel.file18.out
|
||||||
tmp/parallel.file19.file.done
|
tmp/parallel.file19.file.done
|
||||||
tmp/parallel.file19.out
|
tmp/parallel.file19.out
|
||||||
tmp/parallel.file1.file.done
|
|
||||||
tmp/parallel.file1.out
|
|
||||||
tmp/parallel.file20.file.done
|
|
||||||
tmp/parallel.file20.out
|
|
||||||
tmp/parallel.file2.file.done
|
tmp/parallel.file2.file.done
|
||||||
tmp/parallel.file2.out
|
tmp/parallel.file2.out
|
||||||
|
tmp/parallel.file20.file.done
|
||||||
|
tmp/parallel.file20.out
|
||||||
tmp/parallel.file3.file.done
|
tmp/parallel.file3.file.done
|
||||||
tmp/parallel.file3.out
|
tmp/parallel.file3.out
|
||||||
tmp/parallel.file5.file.done
|
tmp/parallel.file5.file.done
|
||||||
|
@ -256,14 +261,16 @@ tmp/parallel.file9.file.done
|
||||||
tmp/parallel.file9.out
|
tmp/parallel.file9.out
|
||||||
tmp/parallel.file>fire.file.done
|
tmp/parallel.file>fire.file.done
|
||||||
tmp/parallel.file>fire.out
|
tmp/parallel.file>fire.out
|
||||||
tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
tmp/parallel.file/sub dir.file.done
|
|
||||||
tmp/parallel.file/sub dir.out
|
|
||||||
good if no file
|
good if no file
|
||||||
ls: cannot access tmp/parallel.file*: No such file or directory
|
ls: cannot access tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --return --cleanup - multiple returns
|
### --return --cleanup - multiple returns
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
/tmp/parallel.file/sub dir.file.done
|
||||||
|
/tmp/parallel.file/sub dir.out
|
||||||
|
/tmp/parallel.file1.file.done
|
||||||
|
/tmp/parallel.file1.out
|
||||||
/tmp/parallel.file10.file.done
|
/tmp/parallel.file10.file.done
|
||||||
/tmp/parallel.file10.out
|
/tmp/parallel.file10.out
|
||||||
/tmp/parallel.file13.file.done
|
/tmp/parallel.file13.file.done
|
||||||
|
@ -280,12 +287,10 @@ OK
|
||||||
/tmp/parallel.file18.out
|
/tmp/parallel.file18.out
|
||||||
/tmp/parallel.file19.file.done
|
/tmp/parallel.file19.file.done
|
||||||
/tmp/parallel.file19.out
|
/tmp/parallel.file19.out
|
||||||
/tmp/parallel.file1.file.done
|
|
||||||
/tmp/parallel.file1.out
|
|
||||||
/tmp/parallel.file20.file.done
|
|
||||||
/tmp/parallel.file20.out
|
|
||||||
/tmp/parallel.file2.file.done
|
/tmp/parallel.file2.file.done
|
||||||
/tmp/parallel.file2.out
|
/tmp/parallel.file2.out
|
||||||
|
/tmp/parallel.file20.file.done
|
||||||
|
/tmp/parallel.file20.out
|
||||||
/tmp/parallel.file3.file.done
|
/tmp/parallel.file3.file.done
|
||||||
/tmp/parallel.file3.out
|
/tmp/parallel.file3.out
|
||||||
/tmp/parallel.file5.file.done
|
/tmp/parallel.file5.file.done
|
||||||
|
@ -300,14 +305,16 @@ OK
|
||||||
/tmp/parallel.file9.out
|
/tmp/parallel.file9.out
|
||||||
/tmp/parallel.file>fire.file.done
|
/tmp/parallel.file>fire.file.done
|
||||||
/tmp/parallel.file>fire.out
|
/tmp/parallel.file>fire.out
|
||||||
/tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
/tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
/tmp/parallel.file/sub dir.file.done
|
|
||||||
/tmp/parallel.file/sub dir.out
|
|
||||||
good if no file
|
good if no file
|
||||||
ls: cannot access tmp/parallel.file*: No such file or directory
|
ls: cannot access tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --transfer --return --cleanup - abspath
|
### --transfer --return --cleanup - abspath
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
/tmp/parallel.file/sub dir.file.done
|
||||||
|
/tmp/parallel.file/sub dir.out
|
||||||
|
/tmp/parallel.file1.file.done
|
||||||
|
/tmp/parallel.file1.out
|
||||||
/tmp/parallel.file10.file.done
|
/tmp/parallel.file10.file.done
|
||||||
/tmp/parallel.file10.out
|
/tmp/parallel.file10.out
|
||||||
/tmp/parallel.file13.file.done
|
/tmp/parallel.file13.file.done
|
||||||
|
@ -324,12 +331,10 @@ OK
|
||||||
/tmp/parallel.file18.out
|
/tmp/parallel.file18.out
|
||||||
/tmp/parallel.file19.file.done
|
/tmp/parallel.file19.file.done
|
||||||
/tmp/parallel.file19.out
|
/tmp/parallel.file19.out
|
||||||
/tmp/parallel.file1.file.done
|
|
||||||
/tmp/parallel.file1.out
|
|
||||||
/tmp/parallel.file20.file.done
|
|
||||||
/tmp/parallel.file20.out
|
|
||||||
/tmp/parallel.file2.file.done
|
/tmp/parallel.file2.file.done
|
||||||
/tmp/parallel.file2.out
|
/tmp/parallel.file2.out
|
||||||
|
/tmp/parallel.file20.file.done
|
||||||
|
/tmp/parallel.file20.out
|
||||||
/tmp/parallel.file3.file.done
|
/tmp/parallel.file3.file.done
|
||||||
/tmp/parallel.file3.out
|
/tmp/parallel.file3.out
|
||||||
/tmp/parallel.file5.file.done
|
/tmp/parallel.file5.file.done
|
||||||
|
@ -344,14 +349,16 @@ OK
|
||||||
/tmp/parallel.file9.out
|
/tmp/parallel.file9.out
|
||||||
/tmp/parallel.file>fire.file.done
|
/tmp/parallel.file>fire.file.done
|
||||||
/tmp/parallel.file>fire.out
|
/tmp/parallel.file>fire.out
|
||||||
/tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
/tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
/tmp/parallel.file/sub dir.file.done
|
|
||||||
/tmp/parallel.file/sub dir.out
|
|
||||||
good if no file
|
good if no file
|
||||||
ls: cannot access /tmp/parallel.file*: No such file or directory
|
ls: cannot access /tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --transfer --return --cleanup - relpath
|
### --transfer --return --cleanup - relpath
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
/tmp/parallel.file/sub dir.file.done
|
||||||
|
/tmp/parallel.file/sub dir.out
|
||||||
|
/tmp/parallel.file1.file.done
|
||||||
|
/tmp/parallel.file1.out
|
||||||
/tmp/parallel.file10.file.done
|
/tmp/parallel.file10.file.done
|
||||||
/tmp/parallel.file10.out
|
/tmp/parallel.file10.out
|
||||||
/tmp/parallel.file13.file.done
|
/tmp/parallel.file13.file.done
|
||||||
|
@ -368,12 +375,10 @@ OK
|
||||||
/tmp/parallel.file18.out
|
/tmp/parallel.file18.out
|
||||||
/tmp/parallel.file19.file.done
|
/tmp/parallel.file19.file.done
|
||||||
/tmp/parallel.file19.out
|
/tmp/parallel.file19.out
|
||||||
/tmp/parallel.file1.file.done
|
|
||||||
/tmp/parallel.file1.out
|
|
||||||
/tmp/parallel.file20.file.done
|
|
||||||
/tmp/parallel.file20.out
|
|
||||||
/tmp/parallel.file2.file.done
|
/tmp/parallel.file2.file.done
|
||||||
/tmp/parallel.file2.out
|
/tmp/parallel.file2.out
|
||||||
|
/tmp/parallel.file20.file.done
|
||||||
|
/tmp/parallel.file20.out
|
||||||
/tmp/parallel.file3.file.done
|
/tmp/parallel.file3.file.done
|
||||||
/tmp/parallel.file3.out
|
/tmp/parallel.file3.out
|
||||||
/tmp/parallel.file5.file.done
|
/tmp/parallel.file5.file.done
|
||||||
|
@ -388,14 +393,16 @@ OK
|
||||||
/tmp/parallel.file9.out
|
/tmp/parallel.file9.out
|
||||||
/tmp/parallel.file>fire.file.done
|
/tmp/parallel.file>fire.file.done
|
||||||
/tmp/parallel.file>fire.out
|
/tmp/parallel.file>fire.out
|
||||||
/tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
/tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
/tmp/parallel.file/sub dir.file.done
|
|
||||||
/tmp/parallel.file/sub dir.out
|
|
||||||
good if no file
|
good if no file
|
||||||
ls: cannot access tmp/parallel.file*: No such file or directory
|
ls: cannot access tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --transfer --return --cleanup - multiple files
|
### --transfer --return --cleanup - multiple files
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
/tmp/parallel.file/sub dir.file.done
|
||||||
|
/tmp/parallel.file/sub dir.out
|
||||||
|
/tmp/parallel.file1.file.done
|
||||||
|
/tmp/parallel.file1.out
|
||||||
/tmp/parallel.file10.file.done
|
/tmp/parallel.file10.file.done
|
||||||
/tmp/parallel.file10.out
|
/tmp/parallel.file10.out
|
||||||
/tmp/parallel.file13.file.done
|
/tmp/parallel.file13.file.done
|
||||||
|
@ -412,12 +419,10 @@ OK
|
||||||
/tmp/parallel.file18.out
|
/tmp/parallel.file18.out
|
||||||
/tmp/parallel.file19.file.done
|
/tmp/parallel.file19.file.done
|
||||||
/tmp/parallel.file19.out
|
/tmp/parallel.file19.out
|
||||||
/tmp/parallel.file1.file.done
|
|
||||||
/tmp/parallel.file1.out
|
|
||||||
/tmp/parallel.file20.file.done
|
|
||||||
/tmp/parallel.file20.out
|
|
||||||
/tmp/parallel.file2.file.done
|
/tmp/parallel.file2.file.done
|
||||||
/tmp/parallel.file2.out
|
/tmp/parallel.file2.out
|
||||||
|
/tmp/parallel.file20.file.done
|
||||||
|
/tmp/parallel.file20.out
|
||||||
/tmp/parallel.file3.file.done
|
/tmp/parallel.file3.file.done
|
||||||
/tmp/parallel.file3.out
|
/tmp/parallel.file3.out
|
||||||
/tmp/parallel.file5.file.done
|
/tmp/parallel.file5.file.done
|
||||||
|
@ -432,13 +437,15 @@ OK
|
||||||
/tmp/parallel.file9.out
|
/tmp/parallel.file9.out
|
||||||
/tmp/parallel.file>fire.file.done
|
/tmp/parallel.file>fire.file.done
|
||||||
/tmp/parallel.file>fire.out
|
/tmp/parallel.file>fire.out
|
||||||
/tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
/tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
/tmp/parallel.file/sub dir.file.done
|
|
||||||
/tmp/parallel.file/sub dir.out
|
|
||||||
ls: cannot access tmp/parallel.file*: No such file or directory
|
ls: cannot access tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --trc - abspath
|
### --trc - abspath
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
/tmp/parallel.file/sub dir.file.done
|
||||||
|
/tmp/parallel.file/sub dir.out
|
||||||
|
/tmp/parallel.file1.file.done
|
||||||
|
/tmp/parallel.file1.out
|
||||||
/tmp/parallel.file10.file.done
|
/tmp/parallel.file10.file.done
|
||||||
/tmp/parallel.file10.out
|
/tmp/parallel.file10.out
|
||||||
/tmp/parallel.file13.file.done
|
/tmp/parallel.file13.file.done
|
||||||
|
@ -455,12 +462,10 @@ OK
|
||||||
/tmp/parallel.file18.out
|
/tmp/parallel.file18.out
|
||||||
/tmp/parallel.file19.file.done
|
/tmp/parallel.file19.file.done
|
||||||
/tmp/parallel.file19.out
|
/tmp/parallel.file19.out
|
||||||
/tmp/parallel.file1.file.done
|
|
||||||
/tmp/parallel.file1.out
|
|
||||||
/tmp/parallel.file20.file.done
|
|
||||||
/tmp/parallel.file20.out
|
|
||||||
/tmp/parallel.file2.file.done
|
/tmp/parallel.file2.file.done
|
||||||
/tmp/parallel.file2.out
|
/tmp/parallel.file2.out
|
||||||
|
/tmp/parallel.file20.file.done
|
||||||
|
/tmp/parallel.file20.out
|
||||||
/tmp/parallel.file3.file.done
|
/tmp/parallel.file3.file.done
|
||||||
/tmp/parallel.file3.out
|
/tmp/parallel.file3.out
|
||||||
/tmp/parallel.file5.file.done
|
/tmp/parallel.file5.file.done
|
||||||
|
@ -475,14 +480,16 @@ OK
|
||||||
/tmp/parallel.file9.out
|
/tmp/parallel.file9.out
|
||||||
/tmp/parallel.file>fire.file.done
|
/tmp/parallel.file>fire.file.done
|
||||||
/tmp/parallel.file>fire.out
|
/tmp/parallel.file>fire.out
|
||||||
/tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
/tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
/tmp/parallel.file/sub dir.file.done
|
|
||||||
/tmp/parallel.file/sub dir.out
|
|
||||||
good if no file
|
good if no file
|
||||||
ls: cannot access /tmp/parallel.file*: No such file or directory
|
ls: cannot access /tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --trc - relpath
|
### --trc - relpath
|
||||||
|
tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
tmp/parallel.file/sub dir.file.done
|
||||||
|
tmp/parallel.file/sub dir.out
|
||||||
|
tmp/parallel.file1.file.done
|
||||||
|
tmp/parallel.file1.out
|
||||||
tmp/parallel.file10.file.done
|
tmp/parallel.file10.file.done
|
||||||
tmp/parallel.file10.out
|
tmp/parallel.file10.out
|
||||||
tmp/parallel.file13.file.done
|
tmp/parallel.file13.file.done
|
||||||
|
@ -499,12 +506,10 @@ tmp/parallel.file18.file.done
|
||||||
tmp/parallel.file18.out
|
tmp/parallel.file18.out
|
||||||
tmp/parallel.file19.file.done
|
tmp/parallel.file19.file.done
|
||||||
tmp/parallel.file19.out
|
tmp/parallel.file19.out
|
||||||
tmp/parallel.file1.file.done
|
|
||||||
tmp/parallel.file1.out
|
|
||||||
tmp/parallel.file20.file.done
|
|
||||||
tmp/parallel.file20.out
|
|
||||||
tmp/parallel.file2.file.done
|
tmp/parallel.file2.file.done
|
||||||
tmp/parallel.file2.out
|
tmp/parallel.file2.out
|
||||||
|
tmp/parallel.file20.file.done
|
||||||
|
tmp/parallel.file20.out
|
||||||
tmp/parallel.file3.file.done
|
tmp/parallel.file3.file.done
|
||||||
tmp/parallel.file3.out
|
tmp/parallel.file3.out
|
||||||
tmp/parallel.file5.file.done
|
tmp/parallel.file5.file.done
|
||||||
|
@ -519,14 +524,16 @@ tmp/parallel.file9.file.done
|
||||||
tmp/parallel.file9.out
|
tmp/parallel.file9.out
|
||||||
tmp/parallel.file>fire.file.done
|
tmp/parallel.file>fire.file.done
|
||||||
tmp/parallel.file>fire.out
|
tmp/parallel.file>fire.out
|
||||||
tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
tmp/parallel.file/sub dir.file.done
|
|
||||||
tmp/parallel.file/sub dir.out
|
|
||||||
good if no file
|
good if no file
|
||||||
ls: cannot access tmp/parallel.file*: No such file or directory
|
ls: cannot access tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
### --trc - multiple files
|
### --trc - multiple files
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.file.done
|
||||||
|
/tmp/parallel.file : & ) \n*.jpg.out
|
||||||
|
/tmp/parallel.file/sub dir.file.done
|
||||||
|
/tmp/parallel.file/sub dir.out
|
||||||
|
/tmp/parallel.file1.file.done
|
||||||
|
/tmp/parallel.file1.out
|
||||||
/tmp/parallel.file10.file.done
|
/tmp/parallel.file10.file.done
|
||||||
/tmp/parallel.file10.out
|
/tmp/parallel.file10.out
|
||||||
/tmp/parallel.file13.file.done
|
/tmp/parallel.file13.file.done
|
||||||
|
@ -543,12 +550,10 @@ OK
|
||||||
/tmp/parallel.file18.out
|
/tmp/parallel.file18.out
|
||||||
/tmp/parallel.file19.file.done
|
/tmp/parallel.file19.file.done
|
||||||
/tmp/parallel.file19.out
|
/tmp/parallel.file19.out
|
||||||
/tmp/parallel.file1.file.done
|
|
||||||
/tmp/parallel.file1.out
|
|
||||||
/tmp/parallel.file20.file.done
|
|
||||||
/tmp/parallel.file20.out
|
|
||||||
/tmp/parallel.file2.file.done
|
/tmp/parallel.file2.file.done
|
||||||
/tmp/parallel.file2.out
|
/tmp/parallel.file2.out
|
||||||
|
/tmp/parallel.file20.file.done
|
||||||
|
/tmp/parallel.file20.out
|
||||||
/tmp/parallel.file3.file.done
|
/tmp/parallel.file3.file.done
|
||||||
/tmp/parallel.file3.out
|
/tmp/parallel.file3.out
|
||||||
/tmp/parallel.file5.file.done
|
/tmp/parallel.file5.file.done
|
||||||
|
@ -563,10 +568,6 @@ OK
|
||||||
/tmp/parallel.file9.out
|
/tmp/parallel.file9.out
|
||||||
/tmp/parallel.file>fire.file.done
|
/tmp/parallel.file>fire.file.done
|
||||||
/tmp/parallel.file>fire.out
|
/tmp/parallel.file>fire.out
|
||||||
/tmp/parallel.file : & ) \n*.jpg.file.done
|
|
||||||
/tmp/parallel.file : & ) \n*.jpg.out
|
|
||||||
/tmp/parallel.file/sub dir.file.done
|
|
||||||
/tmp/parallel.file/sub dir.out
|
|
||||||
good if no file
|
good if no file
|
||||||
ls: cannot access /tmp/parallel.file*: No such file or directory
|
ls: cannot access /tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
|
|
|
@ -75,7 +75,7 @@ OK
|
||||||
ls: cannot access tmp/parallel.file*: No such file or directory
|
ls: cannot access tmp/parallel.file*: No such file or directory
|
||||||
OK
|
OK
|
||||||
Input for ssh
|
Input for ssh
|
||||||
parallel-server1 rsync --server -lDrRze.iLsf . ./
|
parallel-server1 rsync --server -lDErRze.iLsf . ./
|
||||||
parallel-server1 cat tmp/parallel.file.'
|
parallel-server1 cat tmp/parallel.file.'
|
||||||
'newline2 > tmp/parallel.file.'
|
'newline2 > tmp/parallel.file.'
|
||||||
'newline2.out;cat tmp/parallel.file.'
|
'newline2.out;cat tmp/parallel.file.'
|
||||||
|
@ -87,7 +87,7 @@ parallel-server1 rsync --server --sender -lDrRze.iLsf --remove-source-files . ./
|
||||||
'newline2.out2
|
'newline2.out2
|
||||||
parallel-server1 rm -f tmp/parallel.file.'
|
parallel-server1 rm -f tmp/parallel.file.'
|
||||||
'newline2
|
'newline2
|
||||||
-l parallel parallel-server2 rsync --server -lDrRze.iLsf . ./
|
-l parallel parallel-server2 rsync --server -lDErRze.iLsf . ./
|
||||||
parallel@parallel-server2 cat tmp/parallel.file.'
|
parallel@parallel-server2 cat tmp/parallel.file.'
|
||||||
'newline1 > tmp/parallel.file.'
|
'newline1 > tmp/parallel.file.'
|
||||||
'newline1.out;cat tmp/parallel.file.'
|
'newline1.out;cat tmp/parallel.file.'
|
||||||
|
|
36
unittest/wanted-results/test23
Normal file
36
unittest/wanted-results/test23
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
### Test --basefile + --cleanup + permissions
|
||||||
|
scriptrun 1
|
||||||
|
scriptrun 2
|
||||||
|
scriptrun 3
|
||||||
|
scriptrun 4
|
||||||
|
scriptrun 5
|
||||||
|
good if no file
|
||||||
|
ls: cannot access script: No such file or directory
|
||||||
|
OK
|
||||||
|
### Test --basefile + --sshlogin :
|
||||||
|
1
|
||||||
|
10
|
||||||
|
11
|
||||||
|
12
|
||||||
|
13
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
1
|
||||||
|
10
|
||||||
|
11
|
||||||
|
12
|
||||||
|
13
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
Loading…
Reference in a new issue