mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-22 14:07:55 +00:00
parallel: If --results includes a replacement string, no tree structure with args will be generated.
This commit is contained in:
parent
9f7eaa5f93
commit
da705d03b6
|
@ -230,6 +230,8 @@ Haiku of the month:
|
||||||
-- Ole Tange
|
-- Ole Tange
|
||||||
|
|
||||||
New in this release:
|
New in this release:
|
||||||
|
http://www.slideshare.net/AmazonWebServices/aws-reinvent-2016-deep-dive-on-amazon-elastic-file-system-stg202
|
||||||
|
https://www.youtube.com/watch?v=PlTuJx4VnGw slide 45 of the deck and 30:16
|
||||||
https://www2.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-212.pdf
|
https://www2.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-212.pdf
|
||||||
http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0168456#references
|
http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0168456#references
|
||||||
http://people.inf.ethz.ch/trayteld/papers/aerial/aerial.pdf
|
http://people.inf.ethz.ch/trayteld/papers/aerial/aerial.pdf
|
||||||
|
|
128
src/parallel
128
src/parallel
|
@ -6534,24 +6534,7 @@ sub openoutputfiles {
|
||||||
my ($outfhw, $errfhw, $outname, $errname);
|
my ($outfhw, $errfhw, $outname, $errname);
|
||||||
|
|
||||||
if($opt::results and not $Global::csv) {
|
if($opt::results and not $Global::csv) {
|
||||||
# Results as dir
|
my $dir = $self->{'commandline'}->resultsdir();
|
||||||
my $args_as_dirname = $self->{'commandline'}->args_as_dirname();
|
|
||||||
# Output in: prefix/name1/val1/name2/val2/stdout
|
|
||||||
my $dir = $self->{'commandline'}->
|
|
||||||
replace_placeholders([$opt::results],0,0) .
|
|
||||||
"/".$args_as_dirname;
|
|
||||||
if(eval{ File::Path::mkpath($dir); }) {
|
|
||||||
# OK
|
|
||||||
} else {
|
|
||||||
# mkpath failed: Argument probably too long.
|
|
||||||
# Set $Global::max_file_length, which will keep the individual
|
|
||||||
# dir names shorter than the max length
|
|
||||||
max_file_name_length($opt::results);
|
|
||||||
$args_as_dirname = $self->{'commandline'}->args_as_dirname();
|
|
||||||
# prefix/name1/val1/name2/val2/
|
|
||||||
$dir = $opt::results."/".$args_as_dirname;
|
|
||||||
File::Path::mkpath($dir);
|
|
||||||
}
|
|
||||||
# prefix/name1/val1/name2/val2/seq
|
# prefix/name1/val1/name2/val2/seq
|
||||||
my $seqname = "$dir/seq";
|
my $seqname = "$dir/seq";
|
||||||
my $seqfhw;
|
my $seqfhw;
|
||||||
|
@ -6722,43 +6705,7 @@ sub filter_through_compress {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sub max_file_name_length {
|
|
||||||
# Figure out the max length of a subdir
|
|
||||||
# TODO and the max total length
|
|
||||||
# Ext4 = 255,130816
|
|
||||||
# Uses:
|
|
||||||
# $Global::max_file_length is set
|
|
||||||
# Returns:
|
|
||||||
# $Global::max_file_length
|
|
||||||
my $testdir = shift;
|
|
||||||
|
|
||||||
my $upper = 8_000_000;
|
|
||||||
# Dir length of 8 chars is supported everywhere
|
|
||||||
my $len = 8;
|
|
||||||
my $dir = "x"x$len;
|
|
||||||
do {
|
|
||||||
rmdir($testdir."/".$dir);
|
|
||||||
$len *= 16;
|
|
||||||
$dir = "x"x$len;
|
|
||||||
} while ($len < $upper and mkdir $testdir."/".$dir);
|
|
||||||
# Then search for the actual max length between $len/16 and $len
|
|
||||||
my $min = $len/16;
|
|
||||||
my $max = $len;
|
|
||||||
while($max-$min > 5) {
|
|
||||||
# If we are within 5 chars of the exact value:
|
|
||||||
# it is not worth the extra time to find the exact value
|
|
||||||
my $test = int(($min+$max)/2);
|
|
||||||
$dir = "x"x$test;
|
|
||||||
if(mkdir $testdir."/".$dir) {
|
|
||||||
rmdir($testdir."/".$dir);
|
|
||||||
$min = $test;
|
|
||||||
} else {
|
|
||||||
$max = $test;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$Global::max_file_length = $min;
|
|
||||||
return $min;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub set_fh {
|
sub set_fh {
|
||||||
# Set file handle
|
# Set file handle
|
||||||
|
@ -8081,9 +8028,7 @@ sub is_already_in_results {
|
||||||
# Returns:
|
# Returns:
|
||||||
# $job_already_run = bool whether there is output for this or not
|
# $job_already_run = bool whether there is output for this or not
|
||||||
my $job = $_[0];
|
my $job = $_[0];
|
||||||
my $args_as_dirname = $job->{'commandline'}->args_as_dirname();
|
my $dir = $job->{'commandline'}->resultsdir();
|
||||||
# prefix/name1/val1/name2/val2/
|
|
||||||
my $dir = $opt::results."/".$args_as_dirname;
|
|
||||||
::debug("run", "Test $dir/stdout", -e "$dir/stdout", "\n");
|
::debug("run", "Test $dir/stdout", -e "$dir/stdout", "\n");
|
||||||
return -e "$dir/stdout";
|
return -e "$dir/stdout";
|
||||||
}
|
}
|
||||||
|
@ -8951,6 +8896,75 @@ sub args_as_string {
|
||||||
map { @$_ } @{$self->{'arg_list'}});
|
map { @$_ } @{$self->{'arg_list'}});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub resultsdir {
|
||||||
|
sub max_file_name_length {
|
||||||
|
# Figure out the max length of a subdir
|
||||||
|
# TODO and the max total length
|
||||||
|
# Ext4 = 255,130816
|
||||||
|
# Uses:
|
||||||
|
# $Global::max_file_length is set
|
||||||
|
# Returns:
|
||||||
|
# $Global::max_file_length
|
||||||
|
my $testdir = shift;
|
||||||
|
|
||||||
|
my $upper = 8_000_000;
|
||||||
|
# Dir length of 8 chars is supported everywhere
|
||||||
|
my $len = 8;
|
||||||
|
my $dir = "x"x$len;
|
||||||
|
do {
|
||||||
|
rmdir($testdir."/".$dir);
|
||||||
|
$len *= 16;
|
||||||
|
$dir = "x"x$len;
|
||||||
|
} while ($len < $upper and mkdir $testdir."/".$dir);
|
||||||
|
# Then search for the actual max length between $len/16 and $len
|
||||||
|
my $min = $len/16;
|
||||||
|
my $max = $len;
|
||||||
|
while($max-$min > 5) {
|
||||||
|
# If we are within 5 chars of the exact value:
|
||||||
|
# it is not worth the extra time to find the exact value
|
||||||
|
my $test = int(($min+$max)/2);
|
||||||
|
$dir = "x"x$test;
|
||||||
|
if(mkdir $testdir."/".$dir) {
|
||||||
|
rmdir($testdir."/".$dir);
|
||||||
|
$min = $test;
|
||||||
|
} else {
|
||||||
|
$max = $test;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$Global::max_file_length = $min;
|
||||||
|
return $min;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $self = shift;
|
||||||
|
my $dir = $self->replace_placeholders([$opt::results],0,0);
|
||||||
|
if($dir eq $opt::results) {
|
||||||
|
# $opt::results simple string: Append args_as_dirname
|
||||||
|
my $args_as_dirname = $self->args_as_dirname();
|
||||||
|
# Output in: prefix/name1/val1/name2/val2/stdout
|
||||||
|
$dir = $opt::results."/".$args_as_dirname;
|
||||||
|
if(-d $dir or eval{ File::Path::mkpath($dir); }) {
|
||||||
|
# OK
|
||||||
|
} else {
|
||||||
|
# mkpath failed: Argument probably too long.
|
||||||
|
# Set $Global::max_file_length, which will keep the individual
|
||||||
|
# dir names shorter than the max length
|
||||||
|
max_file_name_length($opt::results);
|
||||||
|
$args_as_dirname = $self->args_as_dirname();
|
||||||
|
# prefix/name1/val1/name2/val2/
|
||||||
|
$dir = $opt::results."/".$args_as_dirname;
|
||||||
|
File::Path::mkpath($dir);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(-d $dir or eval{ File::Path::mkpath($dir); }) {
|
||||||
|
# OK
|
||||||
|
} else {
|
||||||
|
::error("Cannot make dir '$dir'.");
|
||||||
|
::wait_and_exit(255);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $dir;
|
||||||
|
}
|
||||||
|
|
||||||
sub args_as_dirname {
|
sub args_as_dirname {
|
||||||
# Returns:
|
# Returns:
|
||||||
# all unmodified arguments joined with '/' (similar to {})
|
# all unmodified arguments joined with '/' (similar to {})
|
||||||
|
|
|
@ -1448,9 +1448,9 @@ it to the command.
|
||||||
Only used with B<--pipe>.
|
Only used with B<--pipe>.
|
||||||
|
|
||||||
|
|
||||||
=item B<--results> I<name> (beta testing)
|
=item B<--results> I<name> (prealpha testing)
|
||||||
|
|
||||||
=item B<--res> I<name> (beta testing)
|
=item B<--res> I<name> (prealpha testing)
|
||||||
|
|
||||||
Save the output into files.
|
Save the output into files.
|
||||||
|
|
||||||
|
@ -1470,15 +1470,33 @@ B<Dir structure output>
|
||||||
|
|
||||||
If I<name> does not end in B<.csv>/B<.tsv> will be treated as a dir.
|
If I<name> does not end in B<.csv>/B<.tsv> will be treated as a dir.
|
||||||
|
|
||||||
The files will be stored in a directory tree rooted at I<name>.
|
If I<name> contains replacement strings output files will be stored in
|
||||||
Within this directory tree, each command will result in two files:
|
the resulting dir.
|
||||||
I<name>/<ARGS>/stdout and I<name>/<ARGS>/stderr, where <ARGS> is a
|
|
||||||
|
E.g.
|
||||||
|
|
||||||
|
parallel --results my_{} echo ::: foo bar baz
|
||||||
|
|
||||||
|
will generate the files:
|
||||||
|
|
||||||
|
my_bar/seq
|
||||||
|
my_bar/stderr
|
||||||
|
my_bar/stdout
|
||||||
|
my_baz/seq
|
||||||
|
my_baz/stderr
|
||||||
|
my_baz/stdout
|
||||||
|
my_foo/seq
|
||||||
|
my_foo/stderr
|
||||||
|
my_foo/stdout
|
||||||
|
|
||||||
|
If I<name> does not contain replacement strings the files will be
|
||||||
|
stored in a directory tree rooted at I<name>. Within this directory
|
||||||
|
tree, each command will result in three files: I<name>/<ARGS>/stdout
|
||||||
|
and I<name>/<ARGS>/stderr, I<name>/<ARGS>/seq, where <ARGS> is a
|
||||||
sequence of directories representing the header of the input source
|
sequence of directories representing the header of the input source
|
||||||
(if using B<--header :>) or the number of the input source and
|
(if using B<--header :>) or the number of the input source and
|
||||||
corresponding values.
|
corresponding values.
|
||||||
|
|
||||||
I<name> can contain replacement strings.
|
|
||||||
|
|
||||||
E.g:
|
E.g:
|
||||||
|
|
||||||
parallel --header : --results foo echo {a} {b} \
|
parallel --header : --results foo echo {a} {b} \
|
||||||
|
@ -1486,14 +1504,18 @@ E.g:
|
||||||
|
|
||||||
will generate the files:
|
will generate the files:
|
||||||
|
|
||||||
foo/a/I/b/III/stderr
|
foo/a/II/b/III/seq
|
||||||
foo/a/I/b/III/stdout
|
|
||||||
foo/a/I/b/IIII/stderr
|
|
||||||
foo/a/I/b/IIII/stdout
|
|
||||||
foo/a/II/b/III/stderr
|
foo/a/II/b/III/stderr
|
||||||
foo/a/II/b/III/stdout
|
foo/a/II/b/III/stdout
|
||||||
|
foo/a/II/b/IIII/seq
|
||||||
foo/a/II/b/IIII/stderr
|
foo/a/II/b/IIII/stderr
|
||||||
foo/a/II/b/IIII/stdout
|
foo/a/II/b/IIII/stdout
|
||||||
|
foo/a/I/b/III/seq
|
||||||
|
foo/a/I/b/III/stderr
|
||||||
|
foo/a/I/b/III/stdout
|
||||||
|
foo/a/I/b/IIII/seq
|
||||||
|
foo/a/I/b/IIII/stderr
|
||||||
|
foo/a/I/b/IIII/stdout
|
||||||
|
|
||||||
and
|
and
|
||||||
|
|
||||||
|
@ -1501,14 +1523,18 @@ and
|
||||||
|
|
||||||
will generate the files:
|
will generate the files:
|
||||||
|
|
||||||
foo/1/I/2/III/stderr
|
foo/1/II/2/III/seq
|
||||||
foo/1/I/2/III/stdout
|
|
||||||
foo/1/I/2/IIII/stderr
|
|
||||||
foo/1/I/2/IIII/stdout
|
|
||||||
foo/1/II/2/III/stderr
|
foo/1/II/2/III/stderr
|
||||||
foo/1/II/2/III/stdout
|
foo/1/II/2/III/stdout
|
||||||
|
foo/1/II/2/IIII/seq
|
||||||
foo/1/II/2/IIII/stderr
|
foo/1/II/2/IIII/stderr
|
||||||
foo/1/II/2/IIII/stdout
|
foo/1/II/2/IIII/stdout
|
||||||
|
foo/1/I/2/III/seq
|
||||||
|
foo/1/I/2/III/stderr
|
||||||
|
foo/1/I/2/III/stdout
|
||||||
|
foo/1/I/2/IIII/seq
|
||||||
|
foo/1/I/2/IIII/stderr
|
||||||
|
foo/1/I/2/IIII/stdout
|
||||||
|
|
||||||
and
|
and
|
||||||
|
|
||||||
|
|
|
@ -857,6 +857,12 @@ If /tmp/parallel runs full during the run, Rust parallel does not
|
||||||
report this, but finishes with success - thereby risking data loss.
|
report this, but finishes with success - thereby risking data loss.
|
||||||
|
|
||||||
|
|
||||||
|
=head2 DIFFERENCES BETWEEN Rush AND GNU Parallel
|
||||||
|
|
||||||
|
Rush (https://github.com/shenwei356/rush) is written in Go and based
|
||||||
|
on gargs.
|
||||||
|
|
||||||
|
|
||||||
=head2 DIFFERENCES BETWEEN ClusterSSH AND GNU Parallel
|
=head2 DIFFERENCES BETWEEN ClusterSSH AND GNU Parallel
|
||||||
|
|
||||||
ClusterSSH solves a different problem than GNU B<parallel>.
|
ClusterSSH solves a different problem than GNU B<parallel>.
|
||||||
|
|
|
@ -2306,7 +2306,9 @@ Output: Same as above.
|
||||||
B<--pipe> is not very efficient. It maxes out at around 500
|
B<--pipe> is not very efficient. It maxes out at around 500
|
||||||
MB/s. B<--pipepart> can easily deliver 5 GB/s. But there are a few
|
MB/s. B<--pipepart> can easily deliver 5 GB/s. But there are a few
|
||||||
limitations. The input has to be a normal file (not a pipe) given by
|
limitations. The input has to be a normal file (not a pipe) given by
|
||||||
B<-a> or B<::::> and B<-L>/B<-l>/B<-N> do not work.
|
B<-a> or B<::::> and B<-L>/B<-l>/B<-N> do not work. B<--recend> and
|
||||||
|
B<--recstart>, however, I<do> work, and records can often be split on
|
||||||
|
that alone.
|
||||||
|
|
||||||
parallel --pipepart -a num1000000 --block 3m wc
|
parallel --pipepart -a num1000000 --block 3m wc
|
||||||
|
|
||||||
|
|
|
@ -603,14 +603,6 @@ echo '### bug #34422: parallel -X --eta crashes with div by zero'
|
||||||
# We do not care how long it took
|
# We do not care how long it took
|
||||||
seq 2 | stdout parallel -X --eta echo | grep -E -v 'ETA:.*AVG'
|
seq 2 | stdout parallel -X --eta echo | grep -E -v 'ETA:.*AVG'
|
||||||
|
|
||||||
echo '**'
|
|
||||||
|
|
||||||
echo '### bug #48295: --results should be dynamic like --wd'
|
|
||||||
|
|
||||||
rm -rf /tmp/parallel-48295;
|
|
||||||
parallel --results /tmp/parallel-48295/{1} -k echo ::: A B ::: a b;
|
|
||||||
find /tmp/parallel-48295 -type f | sort
|
|
||||||
|
|
||||||
echo '**'
|
echo '**'
|
||||||
|
|
||||||
bash -O extglob -c '. `which env_parallel.bash`;
|
bash -O extglob -c '. `which env_parallel.bash`;
|
||||||
|
@ -697,8 +689,29 @@ par_python_children() {
|
||||||
echo '### bug #49970: Python child process dies if --env is used'
|
echo '### bug #49970: Python child process dies if --env is used'
|
||||||
fu() { echo joe; }
|
fu() { echo joe; }
|
||||||
export -f fu
|
export -f fu
|
||||||
stdout parallel --env fu python -c \""import os;f = os.popen('uname -p');output = f.read();rc = f.close()"\" ::: 1
|
echo foo | stdout parallel --env fu python -c \
|
||||||
|
\""import os; f = os.popen('uname -p'); output = f.read(); rc = f.close()"\"
|
||||||
|
}
|
||||||
|
|
||||||
|
par_result_replace() {
|
||||||
|
echo '### bug #49983: --results with {1}'
|
||||||
|
parallel --results /tmp/par_{}_49983 -k echo ::: foo bar baz
|
||||||
|
find /tmp/par_*_49983 | sort
|
||||||
|
rm -rf /tmp/par_*_49983
|
||||||
|
parallel --results /tmp/par_{}_49983 -k echo ::: foo bar baz ::: A B C
|
||||||
|
find /tmp/par_*_49983 | sort
|
||||||
|
rm -rf /tmp/par_*_49983
|
||||||
|
parallel --results /tmp/par_{1}-{2}_49983 -k echo ::: foo bar baz ::: A B C
|
||||||
|
find /tmp/par_*_49983 | sort
|
||||||
|
rm -rf /tmp/par_*_49983
|
||||||
|
parallel --results /tmp/par__49983 -k echo ::: foo bar baz ::: A B C
|
||||||
|
find /tmp/par_*_49983 | sort
|
||||||
|
rm -rf /tmp/par_*_49983
|
||||||
|
parallel --results /tmp/par__49983 --header : -k echo ::: foo bar baz ::: A B C
|
||||||
|
find /tmp/par_*_49983 | sort
|
||||||
|
rm -rf /tmp/par_*_49983
|
||||||
}
|
}
|
||||||
|
|
||||||
export -f $(compgen -A function | grep par_)
|
export -f $(compgen -A function | grep par_)
|
||||||
compgen -A function | grep par_ | sort | parallel -j6 --tag -k --joblog +/tmp/jl-`basename $0` '{} 2>&1'
|
compgen -A function | grep par_ | sort |
|
||||||
|
parallel -j6 --tag -k --joblog +/tmp/jl-`basename $0` '{} 2>&1'
|
||||||
|
|
|
@ -87,3 +87,39 @@ echo '### bug #49404: "Max jobs to run" does not equal the number of jobs specif
|
||||||
echo should give 10 running jobs
|
echo should give 10 running jobs
|
||||||
stdout parallel -S 16/lo --progress true ::: {1..10} | grep /.10
|
stdout parallel -S 16/lo --progress true ::: {1..10} | grep /.10
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
par_trc_with_space() {
|
||||||
|
SERVER1=parallel-server1
|
||||||
|
echo '### Test --trc with space added in filename'
|
||||||
|
echo original > '/tmp/parallel space file'
|
||||||
|
echo '/tmp/parallel space file' | stdout parallel --trc "{} more space" -S parallel@$SERVER1 cat {} ">{}\\ more\\ space"
|
||||||
|
cat '/tmp/parallel space file more space'
|
||||||
|
rm '/tmp/parallel space file' '/tmp/parallel space file more space'
|
||||||
|
}
|
||||||
|
|
||||||
|
par_trc_with_special_chars() {
|
||||||
|
SERVER1=parallel-server1
|
||||||
|
echo '### Test --trc with >|< added in filename'
|
||||||
|
echo original > '/tmp/parallel space file2'
|
||||||
|
echo '/tmp/parallel space file2' | stdout parallel --trc "{} >|<" -S parallel@$SERVER1 cat {} ">{}\\ \\>\\|\\<"
|
||||||
|
cat '/tmp/parallel space file2 >|<'
|
||||||
|
rm '/tmp/parallel space file2' '/tmp/parallel space file2 >|<'
|
||||||
|
}
|
||||||
|
|
||||||
|
par_return_with_fixedstring() {
|
||||||
|
echo '### Test --return with fixed string (Gave undef warnings)'
|
||||||
|
touch a
|
||||||
|
echo a | stdout parallel --return b -S parallel@lo echo ">b" && echo OK
|
||||||
|
rm a b
|
||||||
|
}
|
||||||
|
|
||||||
|
par_quoting_for_onall() {
|
||||||
|
echo '### bug #35427: quoting of {2} broken for --onall'
|
||||||
|
echo foo: /bin/ls | parallel --colsep ' ' -S lo --onall ls {2}
|
||||||
|
}
|
||||||
|
|
||||||
|
export -f $(compgen -A function | grep par_)
|
||||||
|
# Tested with -j1..8
|
||||||
|
# -j6 was fastest
|
||||||
|
#compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1'
|
||||||
|
compgen -A function | grep par_ | sort | parallel --delay 0.1 -j2 --tag -k '{} 2>&1'
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
SERVER1=parallel-server3
|
SERVER1=parallel-server1
|
||||||
SERVER2=lo
|
SERVER2=lo
|
||||||
SSHLOGIN1=parallel@parallel-server3
|
SSHLOGIN1=parallel@parallel-server1
|
||||||
SSHLOGIN2=parallel@lo
|
SSHLOGIN2=parallel@lo
|
||||||
SSHLOGIN3=parallel@parallel-server2
|
SSHLOGIN3=parallel@parallel-server2
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
SERVER1=parallel-server3
|
SERVER1=parallel-server1
|
||||||
SERVER2=parallel-server2
|
SERVER2=parallel-server2
|
||||||
|
|
||||||
echo '### Test $PARALLEL - single line'
|
echo '### Test $PARALLEL - single line'
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
SERVER1=parallel-server3
|
SERVER1=parallel-server1
|
||||||
SERVER2=parallel-server2
|
SERVER2=parallel-server2
|
||||||
|
|
||||||
echo '### Test $PARALLEL_SEQ - local'
|
echo '### Test $PARALLEL_SEQ - local'
|
||||||
|
|
|
@ -1,24 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
SERVER1=parallel-server3
|
SERVER1=parallel-server1
|
||||||
SERVER2=parallel-server2
|
SERVER2=parallel-server2
|
||||||
|
|
||||||
echo '### Test --trc with space added in filename'
|
|
||||||
echo original > '/tmp/parallel space file'
|
|
||||||
echo '/tmp/parallel space file' | stdout parallel --trc "{} more space" -S parallel@$SERVER1 cat {} ">{}\\ more\\ space"
|
|
||||||
cat '/tmp/parallel space file more space'
|
|
||||||
rm '/tmp/parallel space file more space'
|
|
||||||
|
|
||||||
echo '### Test --trc with >|< added in filename'
|
|
||||||
echo original > '/tmp/parallel space file'
|
|
||||||
echo '/tmp/parallel space file' | stdout parallel --trc "{} >|<" -S parallel@$SERVER1 cat {} ">{}\\ \\>\\|\\<"
|
|
||||||
cat '/tmp/parallel space file >|<'
|
|
||||||
rm '/tmp/parallel space file >|<'
|
|
||||||
|
|
||||||
echo '### Test --return with fixed string (Gave undef warnings)'
|
|
||||||
touch a
|
|
||||||
echo a | stdout parallel --return b -S .. echo ">b" && echo OK
|
|
||||||
rm a b
|
|
||||||
|
|
||||||
echo '### bug #35427: quoting of {2} broken for --onall'
|
|
||||||
echo foo: /bin/ls | parallel --colsep ' ' -S localhost --onall ls {2}
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
SERVER1=parallel-server3
|
SERVER1=parallel-server1
|
||||||
SERVER2=parallel-server2
|
SERVER2=parallel-server2
|
||||||
|
|
||||||
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj10 -k --joblog /tmp/jl-`basename $0` -L1
|
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj10 -k --joblog /tmp/jl-`basename $0` -L1
|
||||||
|
|
|
@ -1629,27 +1629,6 @@ Computers / CPU cores / Max jobs to run
|
||||||
|
|
||||||
Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete
|
Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete
|
||||||
echo '**'
|
echo '**'
|
||||||
**
|
|
||||||
echo '### bug #48295: --results should be dynamic like --wd'
|
|
||||||
### bug #48295: --results should be dynamic like --wd
|
|
||||||
rm -rf /tmp/parallel-48295; parallel --results /tmp/parallel-48295/{1} -k echo ::: A B ::: a b; find /tmp/parallel-48295 -type f | sort
|
|
||||||
A a
|
|
||||||
A b
|
|
||||||
B a
|
|
||||||
B b
|
|
||||||
/tmp/parallel-48295/A/1/A/2/a/seq
|
|
||||||
/tmp/parallel-48295/A/1/A/2/a/stderr
|
|
||||||
/tmp/parallel-48295/A/1/A/2/a/stdout
|
|
||||||
/tmp/parallel-48295/A/1/A/2/b/seq
|
|
||||||
/tmp/parallel-48295/A/1/A/2/b/stderr
|
|
||||||
/tmp/parallel-48295/A/1/A/2/b/stdout
|
|
||||||
/tmp/parallel-48295/B/1/B/2/a/seq
|
|
||||||
/tmp/parallel-48295/B/1/B/2/a/stderr
|
|
||||||
/tmp/parallel-48295/B/1/B/2/a/stdout
|
|
||||||
/tmp/parallel-48295/B/1/B/2/b/seq
|
|
||||||
/tmp/parallel-48295/B/1/B/2/b/stderr
|
|
||||||
/tmp/parallel-48295/B/1/B/2/b/stdout
|
|
||||||
echo '**'
|
|
||||||
**
|
**
|
||||||
bash -O extglob -c '. `which env_parallel.bash`; _longopt () { case "$prev" in --+([-a-z0-9_])) echo foo;; esac; }; env_parallel echo ::: env_parallel 2>&1 '
|
bash -O extglob -c '. `which env_parallel.bash`; _longopt () { case "$prev" in --+([-a-z0-9_])) echo foo;; esac; }; env_parallel echo ::: env_parallel 2>&1 '
|
||||||
env_parallel
|
env_parallel
|
||||||
|
@ -1773,3 +1752,188 @@ par_file_ending_in_newline gzip /tmp/parallel_f1
|
||||||
par_file_ending_in_newline gzip /tmp/parallel_f2'
|
par_file_ending_in_newline gzip /tmp/parallel_f2'
|
||||||
par_file_ending_in_newline '
|
par_file_ending_in_newline '
|
||||||
par_python_children ### bug #49970: Python child process dies if --env is used
|
par_python_children ### bug #49970: Python child process dies if --env is used
|
||||||
|
par_result_replace ### bug #49983: --results with {1}
|
||||||
|
par_result_replace foo
|
||||||
|
par_result_replace bar
|
||||||
|
par_result_replace baz
|
||||||
|
par_result_replace /tmp/par_bar_49983
|
||||||
|
par_result_replace /tmp/par_bar_49983/seq
|
||||||
|
par_result_replace /tmp/par_bar_49983/stderr
|
||||||
|
par_result_replace /tmp/par_bar_49983/stdout
|
||||||
|
par_result_replace /tmp/par_baz_49983
|
||||||
|
par_result_replace /tmp/par_baz_49983/seq
|
||||||
|
par_result_replace /tmp/par_baz_49983/stderr
|
||||||
|
par_result_replace /tmp/par_baz_49983/stdout
|
||||||
|
par_result_replace /tmp/par_foo_49983
|
||||||
|
par_result_replace /tmp/par_foo_49983/seq
|
||||||
|
par_result_replace /tmp/par_foo_49983/stderr
|
||||||
|
par_result_replace /tmp/par_foo_49983/stdout
|
||||||
|
par_result_replace foo A
|
||||||
|
par_result_replace foo B
|
||||||
|
par_result_replace foo C
|
||||||
|
par_result_replace bar A
|
||||||
|
par_result_replace bar B
|
||||||
|
par_result_replace bar C
|
||||||
|
par_result_replace baz A
|
||||||
|
par_result_replace baz B
|
||||||
|
par_result_replace baz C
|
||||||
|
par_result_replace /tmp/par_bar A_49983
|
||||||
|
par_result_replace /tmp/par_bar A_49983/seq
|
||||||
|
par_result_replace /tmp/par_bar A_49983/stderr
|
||||||
|
par_result_replace /tmp/par_bar A_49983/stdout
|
||||||
|
par_result_replace /tmp/par_bar B_49983
|
||||||
|
par_result_replace /tmp/par_bar B_49983/seq
|
||||||
|
par_result_replace /tmp/par_bar B_49983/stderr
|
||||||
|
par_result_replace /tmp/par_bar B_49983/stdout
|
||||||
|
par_result_replace /tmp/par_bar C_49983
|
||||||
|
par_result_replace /tmp/par_bar C_49983/seq
|
||||||
|
par_result_replace /tmp/par_bar C_49983/stderr
|
||||||
|
par_result_replace /tmp/par_bar C_49983/stdout
|
||||||
|
par_result_replace /tmp/par_baz A_49983
|
||||||
|
par_result_replace /tmp/par_baz A_49983/seq
|
||||||
|
par_result_replace /tmp/par_baz A_49983/stderr
|
||||||
|
par_result_replace /tmp/par_baz A_49983/stdout
|
||||||
|
par_result_replace /tmp/par_baz B_49983
|
||||||
|
par_result_replace /tmp/par_baz B_49983/seq
|
||||||
|
par_result_replace /tmp/par_baz B_49983/stderr
|
||||||
|
par_result_replace /tmp/par_baz B_49983/stdout
|
||||||
|
par_result_replace /tmp/par_baz C_49983
|
||||||
|
par_result_replace /tmp/par_baz C_49983/seq
|
||||||
|
par_result_replace /tmp/par_baz C_49983/stderr
|
||||||
|
par_result_replace /tmp/par_baz C_49983/stdout
|
||||||
|
par_result_replace /tmp/par_foo A_49983
|
||||||
|
par_result_replace /tmp/par_foo A_49983/seq
|
||||||
|
par_result_replace /tmp/par_foo A_49983/stderr
|
||||||
|
par_result_replace /tmp/par_foo A_49983/stdout
|
||||||
|
par_result_replace /tmp/par_foo B_49983
|
||||||
|
par_result_replace /tmp/par_foo B_49983/seq
|
||||||
|
par_result_replace /tmp/par_foo B_49983/stderr
|
||||||
|
par_result_replace /tmp/par_foo B_49983/stdout
|
||||||
|
par_result_replace /tmp/par_foo C_49983
|
||||||
|
par_result_replace /tmp/par_foo C_49983/seq
|
||||||
|
par_result_replace /tmp/par_foo C_49983/stderr
|
||||||
|
par_result_replace /tmp/par_foo C_49983/stdout
|
||||||
|
par_result_replace foo A
|
||||||
|
par_result_replace foo B
|
||||||
|
par_result_replace foo C
|
||||||
|
par_result_replace bar A
|
||||||
|
par_result_replace bar B
|
||||||
|
par_result_replace bar C
|
||||||
|
par_result_replace baz A
|
||||||
|
par_result_replace baz B
|
||||||
|
par_result_replace baz C
|
||||||
|
par_result_replace /tmp/par_bar-A_49983
|
||||||
|
par_result_replace /tmp/par_bar-A_49983/seq
|
||||||
|
par_result_replace /tmp/par_bar-A_49983/stderr
|
||||||
|
par_result_replace /tmp/par_bar-A_49983/stdout
|
||||||
|
par_result_replace /tmp/par_bar-B_49983
|
||||||
|
par_result_replace /tmp/par_bar-B_49983/seq
|
||||||
|
par_result_replace /tmp/par_bar-B_49983/stderr
|
||||||
|
par_result_replace /tmp/par_bar-B_49983/stdout
|
||||||
|
par_result_replace /tmp/par_bar-C_49983
|
||||||
|
par_result_replace /tmp/par_bar-C_49983/seq
|
||||||
|
par_result_replace /tmp/par_bar-C_49983/stderr
|
||||||
|
par_result_replace /tmp/par_bar-C_49983/stdout
|
||||||
|
par_result_replace /tmp/par_baz-A_49983
|
||||||
|
par_result_replace /tmp/par_baz-A_49983/seq
|
||||||
|
par_result_replace /tmp/par_baz-A_49983/stderr
|
||||||
|
par_result_replace /tmp/par_baz-A_49983/stdout
|
||||||
|
par_result_replace /tmp/par_baz-B_49983
|
||||||
|
par_result_replace /tmp/par_baz-B_49983/seq
|
||||||
|
par_result_replace /tmp/par_baz-B_49983/stderr
|
||||||
|
par_result_replace /tmp/par_baz-B_49983/stdout
|
||||||
|
par_result_replace /tmp/par_baz-C_49983
|
||||||
|
par_result_replace /tmp/par_baz-C_49983/seq
|
||||||
|
par_result_replace /tmp/par_baz-C_49983/stderr
|
||||||
|
par_result_replace /tmp/par_baz-C_49983/stdout
|
||||||
|
par_result_replace /tmp/par_foo-A_49983
|
||||||
|
par_result_replace /tmp/par_foo-A_49983/seq
|
||||||
|
par_result_replace /tmp/par_foo-A_49983/stderr
|
||||||
|
par_result_replace /tmp/par_foo-A_49983/stdout
|
||||||
|
par_result_replace /tmp/par_foo-B_49983
|
||||||
|
par_result_replace /tmp/par_foo-B_49983/seq
|
||||||
|
par_result_replace /tmp/par_foo-B_49983/stderr
|
||||||
|
par_result_replace /tmp/par_foo-B_49983/stdout
|
||||||
|
par_result_replace /tmp/par_foo-C_49983
|
||||||
|
par_result_replace /tmp/par_foo-C_49983/seq
|
||||||
|
par_result_replace /tmp/par_foo-C_49983/stderr
|
||||||
|
par_result_replace /tmp/par_foo-C_49983/stdout
|
||||||
|
par_result_replace foo A
|
||||||
|
par_result_replace foo B
|
||||||
|
par_result_replace foo C
|
||||||
|
par_result_replace bar A
|
||||||
|
par_result_replace bar B
|
||||||
|
par_result_replace bar C
|
||||||
|
par_result_replace baz A
|
||||||
|
par_result_replace baz B
|
||||||
|
par_result_replace baz C
|
||||||
|
par_result_replace /tmp/par__49983
|
||||||
|
par_result_replace /tmp/par__49983/1
|
||||||
|
par_result_replace /tmp/par__49983/1/bar
|
||||||
|
par_result_replace /tmp/par__49983/1/bar/2
|
||||||
|
par_result_replace /tmp/par__49983/1/bar/2/A
|
||||||
|
par_result_replace /tmp/par__49983/1/bar/2/A/seq
|
||||||
|
par_result_replace /tmp/par__49983/1/bar/2/A/stderr
|
||||||
|
par_result_replace /tmp/par__49983/1/bar/2/A/stdout
|
||||||
|
par_result_replace /tmp/par__49983/1/bar/2/B
|
||||||
|
par_result_replace /tmp/par__49983/1/bar/2/B/seq
|
||||||
|
par_result_replace /tmp/par__49983/1/bar/2/B/stderr
|
||||||
|
par_result_replace /tmp/par__49983/1/bar/2/B/stdout
|
||||||
|
par_result_replace /tmp/par__49983/1/bar/2/C
|
||||||
|
par_result_replace /tmp/par__49983/1/bar/2/C/seq
|
||||||
|
par_result_replace /tmp/par__49983/1/bar/2/C/stderr
|
||||||
|
par_result_replace /tmp/par__49983/1/bar/2/C/stdout
|
||||||
|
par_result_replace /tmp/par__49983/1/baz
|
||||||
|
par_result_replace /tmp/par__49983/1/baz/2
|
||||||
|
par_result_replace /tmp/par__49983/1/baz/2/A
|
||||||
|
par_result_replace /tmp/par__49983/1/baz/2/A/seq
|
||||||
|
par_result_replace /tmp/par__49983/1/baz/2/A/stderr
|
||||||
|
par_result_replace /tmp/par__49983/1/baz/2/A/stdout
|
||||||
|
par_result_replace /tmp/par__49983/1/baz/2/B
|
||||||
|
par_result_replace /tmp/par__49983/1/baz/2/B/seq
|
||||||
|
par_result_replace /tmp/par__49983/1/baz/2/B/stderr
|
||||||
|
par_result_replace /tmp/par__49983/1/baz/2/B/stdout
|
||||||
|
par_result_replace /tmp/par__49983/1/baz/2/C
|
||||||
|
par_result_replace /tmp/par__49983/1/baz/2/C/seq
|
||||||
|
par_result_replace /tmp/par__49983/1/baz/2/C/stderr
|
||||||
|
par_result_replace /tmp/par__49983/1/baz/2/C/stdout
|
||||||
|
par_result_replace /tmp/par__49983/1/foo
|
||||||
|
par_result_replace /tmp/par__49983/1/foo/2
|
||||||
|
par_result_replace /tmp/par__49983/1/foo/2/A
|
||||||
|
par_result_replace /tmp/par__49983/1/foo/2/A/seq
|
||||||
|
par_result_replace /tmp/par__49983/1/foo/2/A/stderr
|
||||||
|
par_result_replace /tmp/par__49983/1/foo/2/A/stdout
|
||||||
|
par_result_replace /tmp/par__49983/1/foo/2/B
|
||||||
|
par_result_replace /tmp/par__49983/1/foo/2/B/seq
|
||||||
|
par_result_replace /tmp/par__49983/1/foo/2/B/stderr
|
||||||
|
par_result_replace /tmp/par__49983/1/foo/2/B/stdout
|
||||||
|
par_result_replace /tmp/par__49983/1/foo/2/C
|
||||||
|
par_result_replace /tmp/par__49983/1/foo/2/C/seq
|
||||||
|
par_result_replace /tmp/par__49983/1/foo/2/C/stderr
|
||||||
|
par_result_replace /tmp/par__49983/1/foo/2/C/stdout
|
||||||
|
par_result_replace bar B
|
||||||
|
par_result_replace bar C
|
||||||
|
par_result_replace baz B
|
||||||
|
par_result_replace baz C
|
||||||
|
par_result_replace /tmp/par__49983
|
||||||
|
par_result_replace /tmp/par__49983/A
|
||||||
|
par_result_replace /tmp/par__49983/A/B
|
||||||
|
par_result_replace /tmp/par__49983/A/B/foo
|
||||||
|
par_result_replace /tmp/par__49983/A/B/foo/bar
|
||||||
|
par_result_replace /tmp/par__49983/A/B/foo/bar/seq
|
||||||
|
par_result_replace /tmp/par__49983/A/B/foo/bar/stderr
|
||||||
|
par_result_replace /tmp/par__49983/A/B/foo/bar/stdout
|
||||||
|
par_result_replace /tmp/par__49983/A/B/foo/baz
|
||||||
|
par_result_replace /tmp/par__49983/A/B/foo/baz/seq
|
||||||
|
par_result_replace /tmp/par__49983/A/B/foo/baz/stderr
|
||||||
|
par_result_replace /tmp/par__49983/A/B/foo/baz/stdout
|
||||||
|
par_result_replace /tmp/par__49983/A/C
|
||||||
|
par_result_replace /tmp/par__49983/A/C/foo
|
||||||
|
par_result_replace /tmp/par__49983/A/C/foo/bar
|
||||||
|
par_result_replace /tmp/par__49983/A/C/foo/bar/seq
|
||||||
|
par_result_replace /tmp/par__49983/A/C/foo/bar/stderr
|
||||||
|
par_result_replace /tmp/par__49983/A/C/foo/bar/stdout
|
||||||
|
par_result_replace /tmp/par__49983/A/C/foo/baz
|
||||||
|
par_result_replace /tmp/par__49983/A/C/foo/baz/seq
|
||||||
|
par_result_replace /tmp/par__49983/A/C/foo/baz/stderr
|
||||||
|
par_result_replace /tmp/par__49983/A/C/foo/baz/stdout
|
||||||
|
|
|
@ -482,10 +482,10 @@ par_kill_children_timeout 0 0 0
|
||||||
par_kill_children_timeout 2
|
par_kill_children_timeout 2
|
||||||
par_kill_children_timeout 0 0 0
|
par_kill_children_timeout 0 0 0
|
||||||
par_maxlinelen_X_I ### Test max line length -X -I
|
par_maxlinelen_X_I ### Test max line length -X -I
|
||||||
par_maxlinelen_X_I 47ec7550232044dc1e7a504705a45184 -
|
par_maxlinelen_X_I 81c0a85162c989c07f666b827a30ce52 -
|
||||||
par_maxlinelen_X_I Chars per line (817788/13): 62906
|
par_maxlinelen_X_I Chars per line (817788/13): 62906
|
||||||
par_maxlinelen_m_I ### Test max line length -m -I
|
par_maxlinelen_m_I ### Test max line length -m -I
|
||||||
par_maxlinelen_m_I d10d5c84fc4716b21d90afa92cf44d73 -
|
par_maxlinelen_m_I 14bacad229d8b0d32be0a2339c2a6af7 -
|
||||||
par_maxlinelen_m_I Chars per line (697810/11): 63437
|
par_maxlinelen_m_I Chars per line (697810/11): 63437
|
||||||
par_memleak ### Test memory consumption stays (almost) the same for 30 and 300 jobs
|
par_memleak ### Test memory consumption stays (almost) the same for 30 and 300 jobs
|
||||||
par_memleak should give 1 == true
|
par_memleak should give 1 == true
|
||||||
|
@ -946,17 +946,7 @@ par_round_robin_blocks 8
|
||||||
par_sigterm ### Test SIGTERM
|
par_sigterm ### Test SIGTERM
|
||||||
par_sigterm 1
|
par_sigterm 1
|
||||||
par_sigterm 10
|
par_sigterm 10
|
||||||
par_sigterm 11
|
|
||||||
par_sigterm 12
|
|
||||||
par_sigterm 13
|
|
||||||
par_sigterm 14
|
|
||||||
par_sigterm 15
|
|
||||||
par_sigterm 16
|
|
||||||
par_sigterm 17
|
|
||||||
par_sigterm 18
|
|
||||||
par_sigterm 19
|
|
||||||
par_sigterm 2
|
par_sigterm 2
|
||||||
par_sigterm 20
|
|
||||||
par_sigterm 3
|
par_sigterm 3
|
||||||
par_sigterm 4
|
par_sigterm 4
|
||||||
par_sigterm 5
|
par_sigterm 5
|
||||||
|
@ -965,23 +955,8 @@ par_sigterm 7
|
||||||
par_sigterm 8
|
par_sigterm 8
|
||||||
par_sigterm 9
|
par_sigterm 9
|
||||||
par_sigterm parallel: SIGTERM received. No new jobs will be started.
|
par_sigterm parallel: SIGTERM received. No new jobs will be started.
|
||||||
par_sigterm parallel: Waiting for these 20 jobs to finish. Send SIGTERM again to stop now.
|
par_sigterm parallel: Waiting for these 5 jobs to finish. Send SIGTERM again to stop now.
|
||||||
par_sigterm parallel: sleep 3; echo 1
|
|
||||||
par_sigterm parallel: sleep 3; echo 10
|
par_sigterm parallel: sleep 3; echo 10
|
||||||
par_sigterm parallel: sleep 3; echo 11
|
|
||||||
par_sigterm parallel: sleep 3; echo 12
|
|
||||||
par_sigterm parallel: sleep 3; echo 13
|
|
||||||
par_sigterm parallel: sleep 3; echo 14
|
|
||||||
par_sigterm parallel: sleep 3; echo 15
|
|
||||||
par_sigterm parallel: sleep 3; echo 16
|
|
||||||
par_sigterm parallel: sleep 3; echo 17
|
|
||||||
par_sigterm parallel: sleep 3; echo 18
|
|
||||||
par_sigterm parallel: sleep 3; echo 19
|
|
||||||
par_sigterm parallel: sleep 3; echo 2
|
|
||||||
par_sigterm parallel: sleep 3; echo 20
|
|
||||||
par_sigterm parallel: sleep 3; echo 3
|
|
||||||
par_sigterm parallel: sleep 3; echo 4
|
|
||||||
par_sigterm parallel: sleep 3; echo 5
|
|
||||||
par_sigterm parallel: sleep 3; echo 6
|
par_sigterm parallel: sleep 3; echo 6
|
||||||
par_sigterm parallel: sleep 3; echo 7
|
par_sigterm parallel: sleep 3; echo 7
|
||||||
par_sigterm parallel: sleep 3; echo 8
|
par_sigterm parallel: sleep 3; echo 8
|
||||||
|
|
|
@ -192,7 +192,7 @@ ls: cannot access 'bug46519.ccc': No such file or directory
|
||||||
echo '### Test --nice remote'
|
echo '### Test --nice remote'
|
||||||
### Test --nice remote
|
### Test --nice remote
|
||||||
stdout parallel --nice 1 -S lo -vv 'PAR=a bash -c "echo \$PAR {}"' ::: b | perl -pe 's/\S*parallel-server\S*/one-server/;s:[a-z/\\+=0-9]{500,}:base64:i;'
|
stdout parallel --nice 1 -S lo -vv 'PAR=a bash -c "echo \$PAR {}"' ::: b | perl -pe 's/\S*parallel-server\S*/one-server/;s:[a-z/\\+=0-9]{500,}:base64:i;'
|
||||||
ssh lo -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;eval\\\$eval\\\; base64;
|
ssh lo -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$chld\\\=\\\$SIG\\\{CHLD\\\}\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\$chld\\\;eval\\\$eval\\\; base64;
|
||||||
a b
|
a b
|
||||||
echo '**'
|
echo '**'
|
||||||
**
|
**
|
||||||
|
|
|
@ -128,3 +128,11 @@ echo '### bug #49404: "Max jobs to run" does not equal the number of jobs specif
|
||||||
should give 10 running jobs
|
should give 10 running jobs
|
||||||
stdout parallel -S 16/lo --progress true ::: {1..10} | grep /.10
|
stdout parallel -S 16/lo --progress true ::: {1..10} | grep /.10
|
||||||
1:lo / 16 / 10
|
1:lo / 16 / 10
|
||||||
|
par_quoting_for_onall ### bug #35427: quoting of {2} broken for --onall
|
||||||
|
par_quoting_for_onall /bin/ls
|
||||||
|
par_return_with_fixedstring ### Test --return with fixed string (Gave undef warnings)
|
||||||
|
par_return_with_fixedstring OK
|
||||||
|
par_trc_with_space ### Test --trc with space added in filename
|
||||||
|
par_trc_with_space original
|
||||||
|
par_trc_with_special_chars ### Test --trc with >|< added in filename
|
||||||
|
par_trc_with_special_chars original
|
||||||
|
|
|
@ -34,7 +34,7 @@ Environment variables are:
|
||||||
stderr
|
stderr
|
||||||
|
|
||||||
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
|
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
|
||||||
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.0]
|
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]
|
||||||
/usr/lib/autossh/autossh: invalid option -- '-'
|
/usr/lib/autossh/autossh: invalid option -- '-'
|
||||||
usage: autossh [-V] [-M monitor_port[:echo_port]] [-f] [SSH_OPTIONS]
|
usage: autossh [-V] [-M monitor_port[:echo_port]] [-f] [SSH_OPTIONS]
|
||||||
|
|
||||||
|
@ -66,14 +66,14 @@ Environment variables are:
|
||||||
stderr
|
stderr
|
||||||
|
|
||||||
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
|
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
|
||||||
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.0]
|
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.1]
|
||||||
echo '### bug #46520: --basefile cleans up without --cleanup'
|
echo '### bug #46520: --basefile cleans up without --cleanup'
|
||||||
### bug #46520: --basefile cleans up without --cleanup
|
### bug #46520: --basefile cleans up without --cleanup
|
||||||
touch bug_46520; parallel -S parallel@lo --bf bug_46520 ls ::: bug_46520; ssh parallel@lo ls bug_46520; parallel -S parallel@lo --cleanup --bf bug_46520 ls ::: bug_46520; stdout ssh parallel@lo ls bug_46520 # should not exist
|
touch bug_46520; parallel -S parallel@lo --bf bug_46520 ls ::: bug_46520; ssh parallel@lo ls bug_46520; parallel -S parallel@lo --cleanup --bf bug_46520 ls ::: bug_46520; stdout ssh parallel@lo ls bug_46520 # should not exist
|
||||||
bug_46520
|
bug_46520
|
||||||
bug_46520
|
bug_46520
|
||||||
bug_46520
|
bug_46520
|
||||||
ls: cannot access bug_46520: No such file or directory
|
ls: cannot access 'bug_46520': No such file or directory
|
||||||
echo '### bug #36595: silent loss of input with --pipe and --sshlogin'
|
echo '### bug #36595: silent loss of input with --pipe and --sshlogin'
|
||||||
### bug #36595: silent loss of input with --pipe and --sshlogin
|
### bug #36595: silent loss of input with --pipe and --sshlogin
|
||||||
seq 10000 | xargs | parallel --pipe -S 8/localhost cat 2>/dev/null | wc
|
seq 10000 | xargs | parallel --pipe -S 8/localhost cat 2>/dev/null | wc
|
||||||
|
|
|
@ -54,21 +54,21 @@ echo '### Test --onall -u'; parallel --onall -S parallel@lo,csh@lo -u '(echo {
|
||||||
3
|
3
|
||||||
echo '### Test --nonall'; parallel --nonall -k -S parallel@lo,csh@lo pwd | sort
|
echo '### Test --nonall'; parallel --nonall -k -S parallel@lo,csh@lo pwd | sort
|
||||||
### Test --nonall
|
### Test --nonall
|
||||||
/home/csh
|
/mnt/4tb/home/csh
|
||||||
/home/parallel
|
/mnt/4tb/home/parallel
|
||||||
echo '### Test --nonall -u - should be interleaved x y x y'; parallel --nonall -S parallel@lo,csh@lo -u 'pwd|grep -q csh && sleep 3; pwd;sleep 12;pwd;'
|
echo '### Test --nonall -u - should be interleaved x y x y'; parallel --nonall -S parallel@lo,csh@lo -u 'pwd|grep -q csh && sleep 3; pwd;sleep 12;pwd;'
|
||||||
### Test --nonall -u - should be interleaved x y x y
|
### Test --nonall -u - should be interleaved x y x y
|
||||||
/home/parallel
|
/mnt/4tb/home/parallel
|
||||||
/home/csh
|
/mnt/4tb/home/csh
|
||||||
/home/parallel
|
/mnt/4tb/home/parallel
|
||||||
/home/csh
|
/mnt/4tb/home/csh
|
||||||
echo '### Test read sshloginfile from STDIN'; echo parallel@lo,csh@lo | parallel -S - -k --nonall pwd; echo parallel@lo,csh@lo | parallel --sshloginfile - -k --onall pwd\; echo ::: foo
|
echo '### Test read sshloginfile from STDIN'; echo parallel@lo,csh@lo | parallel -S - -k --nonall pwd; echo parallel@lo,csh@lo | parallel --sshloginfile - -k --onall pwd\; echo ::: foo
|
||||||
### Test read sshloginfile from STDIN
|
### Test read sshloginfile from STDIN
|
||||||
/home/csh
|
/mnt/4tb/home/csh
|
||||||
/home/parallel
|
/mnt/4tb/home/parallel
|
||||||
/home/csh
|
/mnt/4tb/home/csh
|
||||||
foo
|
foo
|
||||||
/home/parallel
|
/mnt/4tb/home/parallel
|
||||||
foo
|
foo
|
||||||
echo '**'
|
echo '**'
|
||||||
**
|
**
|
||||||
|
@ -88,24 +88,24 @@ echo '### Test --nonall --basefile --cleanup (rm should fail)'; touch tmp/nona
|
||||||
### Test --nonall --basefile --cleanup (rm should fail)
|
### Test --nonall --basefile --cleanup (rm should fail)
|
||||||
tmp/nonall--basefile--clean
|
tmp/nonall--basefile--clean
|
||||||
tmp/nonall--basefile--clean
|
tmp/nonall--basefile--clean
|
||||||
rm: cannot remove ‘tmp/nonall--basefile--clean’: No such file or directory
|
rm: cannot remove 'tmp/nonall--basefile--clean': No such file or directory
|
||||||
rm: cannot remove ‘tmp/nonall--basefile--clean’: No such file or directory
|
rm: cannot remove 'tmp/nonall--basefile--clean': No such file or directory
|
||||||
echo '**'
|
echo '**'
|
||||||
**
|
**
|
||||||
echo '### Test --onall --basefile --cleanup (rm should fail)'; touch tmp/onall--basefile--clean; stdout parallel --onall --basefile tmp/onall--basefile--clean --cleanup -S parallel@lo,csh@lo ls {} ::: tmp/onall--basefile--clean; stdout parallel --onall -S parallel@lo,csh@lo rm {} ::: tmp/onall--basefile--clean; stdout rm tmp/onall--basefile--clean
|
echo '### Test --onall --basefile --cleanup (rm should fail)'; touch tmp/onall--basefile--clean; stdout parallel --onall --basefile tmp/onall--basefile--clean --cleanup -S parallel@lo,csh@lo ls {} ::: tmp/onall--basefile--clean; stdout parallel --onall -S parallel@lo,csh@lo rm {} ::: tmp/onall--basefile--clean; stdout rm tmp/onall--basefile--clean
|
||||||
### Test --onall --basefile --cleanup (rm should fail)
|
### Test --onall --basefile --cleanup (rm should fail)
|
||||||
tmp/onall--basefile--clean
|
tmp/onall--basefile--clean
|
||||||
tmp/onall--basefile--clean
|
tmp/onall--basefile--clean
|
||||||
rm: cannot remove ‘tmp/onall--basefile--clean’: No such file or directory
|
rm: cannot remove 'tmp/onall--basefile--clean': No such file or directory
|
||||||
rm: cannot remove ‘tmp/onall--basefile--clean’: No such file or directory
|
rm: cannot remove 'tmp/onall--basefile--clean': No such file or directory
|
||||||
echo '**'
|
echo '**'
|
||||||
**
|
**
|
||||||
echo '### Test --workdir .'; ssh parallel@lo mkdir -p mydir; mkdir -p $HOME/mydir; cd $HOME/mydir; parallel --workdir . -S parallel@lo ::: pwd
|
echo '### Test --workdir .'; ssh parallel@lo mkdir -p mydir; mkdir -p $HOME/mydir; cd $HOME/mydir; parallel --workdir . -S parallel@lo ::: pwd
|
||||||
### Test --workdir .
|
### Test --workdir .
|
||||||
/home/parallel/mydir
|
/mnt/4tb/home/parallel/mydir
|
||||||
echo '### Test --wd .'; ssh csh@lo mkdir -p mydir; mkdir -p $HOME/mydir; cd $HOME/mydir; parallel --workdir . -S csh@lo ::: pwd
|
echo '### Test --wd .'; ssh csh@lo mkdir -p mydir; mkdir -p $HOME/mydir; cd $HOME/mydir; parallel --workdir . -S csh@lo ::: pwd
|
||||||
### Test --wd .
|
### Test --wd .
|
||||||
/home/csh/mydir
|
/mnt/4tb/home/csh/mydir
|
||||||
echo '### Test --wd {}'; ssh csh@lo rm -rf wd1 wd2; mkdir -p $HOME/mydir; cd $HOME/mydir; parallel --workdir {} -S csh@lo touch ::: wd1 wd2; ssh csh@lo ls -d wd1 wd2
|
echo '### Test --wd {}'; ssh csh@lo rm -rf wd1 wd2; mkdir -p $HOME/mydir; cd $HOME/mydir; parallel --workdir {} -S csh@lo touch ::: wd1 wd2; ssh csh@lo ls -d wd1 wd2
|
||||||
### Test --wd {}
|
### Test --wd {}
|
||||||
wd1
|
wd1
|
||||||
|
|
|
@ -32,6 +32,8 @@ rld
|
||||||
echo '### -E_ -0 echo < eof_-0.xi'
|
echo '### -E_ -0 echo < eof_-0.xi'
|
||||||
### -E_ -0 echo < eof_-0.xi
|
### -E_ -0 echo < eof_-0.xi
|
||||||
stdout xargs -E_ -0 echo < eof_-0.xi
|
stdout xargs -E_ -0 echo < eof_-0.xi
|
||||||
|
xargs: warning: the -E option has no effect if -0 or -d is used.
|
||||||
|
|
||||||
one two _ three four
|
one two _ three four
|
||||||
stdout parallel -X -k -E_ -0 echo < eof_-0.xi
|
stdout parallel -X -k -E_ -0 echo < eof_-0.xi
|
||||||
one
|
one
|
||||||
|
@ -456,7 +458,7 @@ echo '### true < 32767-ys.xi'
|
||||||
### true < 32767-ys.xi
|
### true < 32767-ys.xi
|
||||||
stdout xargs true < 32767-ys.xi
|
stdout xargs true < 32767-ys.xi
|
||||||
stdout parallel -k true < 32767-ys.xi
|
stdout parallel -k true < 32767-ys.xi
|
||||||
parallel: Error: Command line too long (98306 >= 65524) at input 0: y y y y y y y y y y y y y y y y y y y y y y y y y ...
|
parallel: Error: Command line too long (98306 >= 65528) at input 0: y y y y y y y y y y y y y y y y y y y y y y y y y ...
|
||||||
echo '### true < 16383-ys.xi'
|
echo '### true < 16383-ys.xi'
|
||||||
### true < 16383-ys.xi
|
### true < 16383-ys.xi
|
||||||
stdout xargs true < 16383-ys.xi
|
stdout xargs true < 16383-ys.xi
|
||||||
|
|
|
@ -111,7 +111,7 @@ echo '### Test -m with 60000 args'; seq 1 60000 | perl -pe 's/$/.gif/' | par
|
||||||
20 179960 1286702
|
20 179960 1286702
|
||||||
echo '### Test -X with 60000 args'; seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.} | tee >(wc; sleep 1) >(md5sum; sleep 1) >/dev/null; wait; sleep 1
|
echo '### Test -X with 60000 args'; seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.} | tee >(wc; sleep 1) >(md5sum; sleep 1) >/dev/null; wait; sleep 1
|
||||||
### Test -X with 60000 args
|
### Test -X with 60000 args
|
||||||
8646e0f7fd5f8795e4b1a831ede50e85 -
|
97715240fa65309902932877d24273db -
|
||||||
21 60000 1346682
|
21 60000 1346682
|
||||||
echo '### Test -X with 60000 args and 5 expansions'
|
echo '### Test -X with 60000 args and 5 expansions'
|
||||||
### Test -X with 60000 args and 5 expansions
|
### Test -X with 60000 args and 5 expansions
|
||||||
|
|
|
@ -95,56 +95,8 @@ par_shebang_wrap_lua Arguments arg3
|
||||||
par_shebang_wrap_nodejs Arguments [ 'arg1' ]
|
par_shebang_wrap_nodejs Arguments [ 'arg1' ]
|
||||||
par_shebang_wrap_nodejs Arguments [ 'arg2' ]
|
par_shebang_wrap_nodejs Arguments [ 'arg2' ]
|
||||||
par_shebang_wrap_nodejs Arguments [ 'arg3' ]
|
par_shebang_wrap_nodejs Arguments [ 'arg3' ]
|
||||||
par_shebang_wrap_octave GNU Octave, version 3.8.1
|
|
||||||
par_shebang_wrap_octave Copyright (C) 2014 John W. Eaton and others.
|
|
||||||
par_shebang_wrap_octave This is free software; see the source code for copying conditions.
|
|
||||||
par_shebang_wrap_octave There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or
|
|
||||||
par_shebang_wrap_octave FITNESS FOR A PARTICULAR PURPOSE. For details, type 'warranty'.
|
|
||||||
par_shebang_wrap_octave
|
|
||||||
par_shebang_wrap_octave Octave was configured for "x86_64-pc-linux-gnu".
|
|
||||||
par_shebang_wrap_octave
|
|
||||||
par_shebang_wrap_octave Additional information about Octave is available at http://www.octave.org.
|
|
||||||
par_shebang_wrap_octave
|
|
||||||
par_shebang_wrap_octave Please contribute if you find this software useful.
|
|
||||||
par_shebang_wrap_octave For more information, visit http://www.octave.org/get-involved.html
|
|
||||||
par_shebang_wrap_octave
|
|
||||||
par_shebang_wrap_octave Read http://www.octave.org/bugs.html to learn how to submit bug reports.
|
|
||||||
par_shebang_wrap_octave For information about changes from previous versions, type 'news'.
|
|
||||||
par_shebang_wrap_octave
|
|
||||||
par_shebang_wrap_octave Arguments arg1
|
par_shebang_wrap_octave Arguments arg1
|
||||||
par_shebang_wrap_octave GNU Octave, version 3.8.1
|
|
||||||
par_shebang_wrap_octave Copyright (C) 2014 John W. Eaton and others.
|
|
||||||
par_shebang_wrap_octave This is free software; see the source code for copying conditions.
|
|
||||||
par_shebang_wrap_octave There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or
|
|
||||||
par_shebang_wrap_octave FITNESS FOR A PARTICULAR PURPOSE. For details, type 'warranty'.
|
|
||||||
par_shebang_wrap_octave
|
|
||||||
par_shebang_wrap_octave Octave was configured for "x86_64-pc-linux-gnu".
|
|
||||||
par_shebang_wrap_octave
|
|
||||||
par_shebang_wrap_octave Additional information about Octave is available at http://www.octave.org.
|
|
||||||
par_shebang_wrap_octave
|
|
||||||
par_shebang_wrap_octave Please contribute if you find this software useful.
|
|
||||||
par_shebang_wrap_octave For more information, visit http://www.octave.org/get-involved.html
|
|
||||||
par_shebang_wrap_octave
|
|
||||||
par_shebang_wrap_octave Read http://www.octave.org/bugs.html to learn how to submit bug reports.
|
|
||||||
par_shebang_wrap_octave For information about changes from previous versions, type 'news'.
|
|
||||||
par_shebang_wrap_octave
|
|
||||||
par_shebang_wrap_octave Arguments arg2
|
par_shebang_wrap_octave Arguments arg2
|
||||||
par_shebang_wrap_octave GNU Octave, version 3.8.1
|
|
||||||
par_shebang_wrap_octave Copyright (C) 2014 John W. Eaton and others.
|
|
||||||
par_shebang_wrap_octave This is free software; see the source code for copying conditions.
|
|
||||||
par_shebang_wrap_octave There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or
|
|
||||||
par_shebang_wrap_octave FITNESS FOR A PARTICULAR PURPOSE. For details, type 'warranty'.
|
|
||||||
par_shebang_wrap_octave
|
|
||||||
par_shebang_wrap_octave Octave was configured for "x86_64-pc-linux-gnu".
|
|
||||||
par_shebang_wrap_octave
|
|
||||||
par_shebang_wrap_octave Additional information about Octave is available at http://www.octave.org.
|
|
||||||
par_shebang_wrap_octave
|
|
||||||
par_shebang_wrap_octave Please contribute if you find this software useful.
|
|
||||||
par_shebang_wrap_octave For more information, visit http://www.octave.org/get-involved.html
|
|
||||||
par_shebang_wrap_octave
|
|
||||||
par_shebang_wrap_octave Read http://www.octave.org/bugs.html to learn how to submit bug reports.
|
|
||||||
par_shebang_wrap_octave For information about changes from previous versions, type 'news'.
|
|
||||||
par_shebang_wrap_octave
|
|
||||||
par_shebang_wrap_octave Arguments arg3
|
par_shebang_wrap_octave Arguments arg3
|
||||||
par_shebang_wrap_perl Arguments arg1
|
par_shebang_wrap_perl Arguments arg1
|
||||||
par_shebang_wrap_perl Arguments arg2
|
par_shebang_wrap_perl Arguments arg2
|
||||||
|
|
|
@ -61,7 +61,7 @@ echo '### Check that 4 processes are really used'
|
||||||
echo '### --version must have higher priority than retired options'
|
echo '### --version must have higher priority than retired options'
|
||||||
### --version must have higher priority than retired options
|
### --version must have higher priority than retired options
|
||||||
$NICEPAR --version -g -Y -U -W -T | tail
|
$NICEPAR --version -g -Y -U -W -T | tail
|
||||||
Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014,2015,2016
|
Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017
|
||||||
Ole Tange and Free Software Foundation, Inc.
|
Ole Tange and Free Software Foundation, Inc.
|
||||||
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
||||||
This is free software: you are free to change and redistribute it.
|
This is free software: you are free to change and redistribute it.
|
||||||
|
@ -74,9 +74,9 @@ please cite as described in 'parallel --citation'.
|
||||||
echo '### bug #39787: --xargs broken'
|
echo '### bug #39787: --xargs broken'
|
||||||
### bug #39787: --xargs broken
|
### bug #39787: --xargs broken
|
||||||
nice perl -e 'for(1..30000){print "$_\n"}' | $NICEPAR --xargs -k echo | perl -ne 'print length $_,"\n"'
|
nice perl -e 'for(1..30000){print "$_\n"}' | $NICEPAR --xargs -k echo | perl -ne 'print length $_,"\n"'
|
||||||
65514
|
65520
|
||||||
65514
|
65520
|
||||||
37866
|
37854
|
||||||
echo '### --delay should grow by 3 sec per arg'
|
echo '### --delay should grow by 3 sec per arg'
|
||||||
### --delay should grow by 3 sec per arg
|
### --delay should grow by 3 sec per arg
|
||||||
stdout /usr/bin/time -f %e parallel --delay 3 true ::: 1 2 | perl -ne '$_ >= 3 and $_ <= 8 and print "OK\n"'
|
stdout /usr/bin/time -f %e parallel --delay 3 true ::: 1 2 | perl -ne '$_ >= 3 and $_ <= 8 and print "OK\n"'
|
||||||
|
|
|
@ -63,7 +63,7 @@ echo '### Test --number-of-cpus'; stdout $NICEPAR --number-of-cpus
|
||||||
1
|
1
|
||||||
echo '### Test --number-of-cores'; stdout $NICEPAR --number-of-cores
|
echo '### Test --number-of-cores'; stdout $NICEPAR --number-of-cores
|
||||||
### Test --number-of-cores
|
### Test --number-of-cores
|
||||||
2
|
8
|
||||||
echo '### Test --use-cpus-instead-of-cores'; (seq 1 8 | stdout parallel --use-cpus-instead-of-cores -j100% sleep) && echo CPUs done & (seq 1 8 | stdout parallel -j100% sleep) && echo cores done & echo 'Cores should complete first on machines with less than 8 physical CPUs'; wait
|
echo '### Test --use-cpus-instead-of-cores'; (seq 1 8 | stdout parallel --use-cpus-instead-of-cores -j100% sleep) && echo CPUs done & (seq 1 8 | stdout parallel -j100% sleep) && echo cores done & echo 'Cores should complete first on machines with less than 8 physical CPUs'; wait
|
||||||
### Test --use-cpus-instead-of-cores
|
### Test --use-cpus-instead-of-cores
|
||||||
Cores should complete first on machines with less than 8 physical CPUs
|
Cores should complete first on machines with less than 8 physical CPUs
|
||||||
|
@ -400,7 +400,7 @@ echo "### BUG: empty lines with --show-limit"
|
||||||
### BUG: empty lines with --show-limit
|
### BUG: empty lines with --show-limit
|
||||||
echo | $NICEPAR --show-limits
|
echo | $NICEPAR --show-limits
|
||||||
Maximal size of command: 131049
|
Maximal size of command: 131049
|
||||||
Maximal used size of command: 65524
|
Maximal used size of command: 65528
|
||||||
|
|
||||||
Execution of will continue now, and it will try to read its input
|
Execution of will continue now, and it will try to read its input
|
||||||
and run commands; if this is not what you wanted to happen, please
|
and run commands; if this is not what you wanted to happen, please
|
||||||
|
|
|
@ -102,16 +102,16 @@ TODO test ssh with > 9 simultaneous
|
||||||
100
|
100
|
||||||
echo '### test --timeout --retries'
|
echo '### test --timeout --retries'
|
||||||
### test --timeout --retries
|
### test --timeout --retries
|
||||||
parallel -j0 --timeout 5 --retries 3 -k ssh {} echo {} ::: 192.168.1.197 8.8.8.8 parallel@parallel-server3 parallel@lo parallel@parallel-server2
|
parallel -j0 --timeout 5 --retries 3 -k ssh {} echo {} ::: 192.168.1.197 8.8.8.8 parallel@parallel-server1 parallel@lo parallel@parallel-server2
|
||||||
parallel@parallel-server3
|
parallel@parallel-server1
|
||||||
parallel@lo
|
parallel@lo
|
||||||
parallel@parallel-server2
|
parallel@parallel-server2
|
||||||
echo '### test --filter-hosts with server w/o ssh, non-existing server'
|
echo '### test --filter-hosts with server w/o ssh, non-existing server'
|
||||||
### test --filter-hosts with server w/o ssh, non-existing server
|
### test --filter-hosts with server w/o ssh, non-existing server
|
||||||
parallel -S 192.168.1.197,8.8.8.8,parallel@parallel-server3,parallel@lo,parallel@parallel-server2 --filter-hosts --nonall -k --tag echo
|
parallel -S 192.168.1.197,8.8.8.8,parallel@parallel-server1,parallel@lo,parallel@parallel-server2 --filter-hosts --nonall -k --tag echo
|
||||||
parallel@lo
|
parallel@lo
|
||||||
|
parallel@parallel-server1
|
||||||
parallel@parallel-server2
|
parallel@parallel-server2
|
||||||
parallel@parallel-server3
|
|
||||||
echo '### bug #41964: --controlmaster not seems to reuse OpenSSH connections to the same host'
|
echo '### bug #41964: --controlmaster not seems to reuse OpenSSH connections to the same host'
|
||||||
### bug #41964: --controlmaster not seems to reuse OpenSSH connections to the same host
|
### bug #41964: --controlmaster not seems to reuse OpenSSH connections to the same host
|
||||||
(parallel -S redhat9.tange.dk true ::: {1..20}; echo No --controlmaster - finish last) & (parallel -M -S redhat9.tange.dk true ::: {1..20}; echo With --controlmaster - finish first) & wait
|
(parallel -S redhat9.tange.dk true ::: {1..20}; echo No --controlmaster - finish last) & (parallel -M -S redhat9.tange.dk true ::: {1..20}; echo With --controlmaster - finish first) & wait
|
||||||
|
@ -123,7 +123,7 @@ echo '### --filter-hosts - OK, non-such-user, connection refused, wrong host'
|
||||||
aspire
|
aspire
|
||||||
echo '### test --workdir . in $HOME'
|
echo '### test --workdir . in $HOME'
|
||||||
### test --workdir . in $HOME
|
### test --workdir . in $HOME
|
||||||
cd && mkdir -p parallel-test && cd parallel-test && echo OK > testfile && parallel --workdir . --transfer -S parallel@parallel-server3 cat {} ::: testfile
|
cd && mkdir -p parallel-test && cd parallel-test && echo OK > testfile && parallel --workdir . --transfer -S parallel@parallel-server1 cat {} ::: testfile
|
||||||
OK
|
OK
|
||||||
echo '### TODO: test --filter-hosts proxied through the one host'
|
echo '### TODO: test --filter-hosts proxied through the one host'
|
||||||
### TODO: test --filter-hosts proxied through the one host
|
### TODO: test --filter-hosts proxied through the one host
|
||||||
|
|
|
@ -913,7 +913,7 @@ _
|
||||||
}
|
}
|
||||||
export -f my_func3
|
export -f my_func3
|
||||||
parallel -vv --workdir ... --nice 17 --env _ --trc {}.out -S $SERVER1 my_func3 {} ::: abc-file
|
parallel -vv --workdir ... --nice 17 --env _ --trc {}.out -S $SERVER1 my_func3 {} ::: abc-file
|
||||||
ssh -l parallel lo -- mkdir -p ./.TMPWORKDIR && rsync --protocol 30 -rlDzR -essh\ -l\ parallel ./abc-file lo:./.TMPWORKDIR;ssh -l parallel lo -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;eval\\\$eval\\\; BASE64;_EXIT_status=$?; mkdir -p ./. && rsync --protocol 30 --rsync-path=cd\ ./.TMPWORKDIR/./.\;\ rsync -rlDzR -essh\ -l\ parallel lo:./abc-file.out ./.;ssh -l parallel lo -- rm\ -f\ ./.TMPWORKDIR/abc-file\;\ sh\ -c\ rmdir\\\ ./.TMPWORKDIR/\\\ ./.parallel/tmp/\\\ ./.parallel/\\\ 2\\\>/dev/null\\\;rm\\\ -rf\\\ ./.TMPWORKDIR\\\;;ssh -l parallel lo -- rm\ -f\ ./.TMPWORKDIR/abc-file.out\;\ sh\ -c\ rmdir\\\ ./.TMPWORKDIR/\\\ ./.parallel/tmp/\\\ ./.parallel/\\\ 2\\\>/dev/null\\\;rm\\\ -rf\\\ ./.TMPWORKDIR\\\;;ssh -l parallel lo -- rm -rf .TMPWORKDIR; exit $_EXIT_status;
|
ssh -l parallel lo -- mkdir -p ./.TMPWORKDIR && rsync --protocol 30 -rlDzR -essh\ -l\ parallel ./abc-file lo:./.TMPWORKDIR;ssh -l parallel lo -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$chld\\\=\\\$SIG\\\{CHLD\\\}\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\$chld\\\;eval\\\$eval\\\; BASE64;_EXIT_status=$?; mkdir -p ./. && rsync --protocol 30 --rsync-path=cd\ ./.TMPWORKDIR/./.\;\ rsync -rlDzR -essh\ -l\ parallel lo:./abc-file.out ./.;ssh -l parallel lo -- rm\ -f\ ./.TMPWORKDIR/abc-file\;\ sh\ -c\ rmdir\\\ ./.TMPWORKDIR/\\\ ./.parallel/tmp/\\\ ./.parallel/\\\ 2\\\>/dev/null\\\;rm\\\ -rf\\\ ./.TMPWORKDIR\\\;;ssh -l parallel lo -- rm\ -f\ ./.TMPWORKDIR/abc-file.out\;\ sh\ -c\ rmdir\\\ ./.TMPWORKDIR/\\\ ./.parallel/tmp/\\\ ./.parallel/\\\ 2\\\>/dev/null\\\;rm\\\ -rf\\\ ./.TMPWORKDIR\\\;;ssh -l parallel lo -- rm -rf .TMPWORKDIR; exit $_EXIT_status;
|
||||||
parallel --sqlandworker csv:////%2Ftmp%2Flog.csv seq ::: 10 ::: 12 13 14
|
parallel --sqlandworker csv:////%2Ftmp%2Flog.csv seq ::: 10 ::: 12 13 14
|
||||||
cat /tmp/log.csv
|
cat /tmp/log.csv
|
||||||
99
|
99
|
||||||
|
@ -1315,7 +1315,7 @@ If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
|
||||||
|
|
||||||
parallel --version
|
parallel --version
|
||||||
GNU parallel VERSION
|
GNU parallel VERSION
|
||||||
Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014,2015,2016
|
Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017
|
||||||
Ole Tange and Free Software Foundation, Inc.
|
Ole Tange and Free Software Foundation, Inc.
|
||||||
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
||||||
This is free software: you are free to change and redistribute it.
|
This is free software: you are free to change and redistribute it.
|
||||||
|
|
|
@ -77,8 +77,8 @@ mysql: [Warning] Using a password on the command line interface can be insecure.
|
||||||
Test if --debug works
|
Test if --debug works
|
||||||
Yes it does
|
Yes it does
|
||||||
### Test --version -V
|
### Test --version -V
|
||||||
12 74 500
|
13 74 535
|
||||||
12 74 500
|
13 74 535
|
||||||
### Test -r
|
### Test -r
|
||||||
dburl pg://nongood@127.0.0.3:2227/
|
dburl pg://nongood@127.0.0.3:2227/
|
||||||
databasedriver pg user nongood password host 127.0.0.3 port 2227 database nongood query
|
databasedriver pg user nongood password host 127.0.0.3 port 2227 database nongood query
|
||||||
|
|
|
@ -41,6 +41,3 @@ parallel: sleep 3; echo 14
|
||||||
parallel: sleep 3; echo 15
|
parallel: sleep 3; echo 15
|
||||||
parallel: sleep 3; echo 16
|
parallel: sleep 3; echo 16
|
||||||
parallel: sleep 3; echo 9
|
parallel: sleep 3; echo 9
|
||||||
### Test bug: empty line for | sh with -k
|
|
||||||
a
|
|
||||||
b
|
|
||||||
|
|
|
@ -77,7 +77,7 @@ OK
|
||||||
Input for ssh
|
Input for ssh
|
||||||
-l parallel one-server -- mkdir -p ./.
|
-l parallel one-server -- mkdir -p ./.
|
||||||
-l parallel one-server rsync --server -lDrRze.iLsfx . ./.
|
-l parallel one-server rsync --server -lDrRze.iLsfx . ./.
|
||||||
-l parallel one-server -- exec perl -e @GNU_Parallel\=split/_/,\"use_IPC::Open3\;_use_MIME::Base64\"\;eval\"@GNU_Parallel\"\;\$SIG\{CHLD\}\=\"IGNORE\"\;my\$zip\=\(grep\{-x\$_\}\"/usr/local/bin/bzip2\"\)\[0\]\|\|\"bzip2\"\;open3\(\$in,\$out,\"\>\&STDERR\",\$zip,\"-dc\"\)\;if\(my\$perlpid\=fork\)\{close\$in\;\$eval\=join\"\",\<\$out\>\;close\$out\;\}else\{close\$out\;print\$in\(decode_base64\(join\"\",@ARGV\)\)\;close\$in\;exit\;\}wait\;eval\$eval\; base64
|
-l parallel one-server -- exec perl -e @GNU_Parallel\=split/_/,\"use_IPC::Open3\;_use_MIME::Base64\"\;eval\"@GNU_Parallel\"\;\$chld\=\$SIG\{CHLD\}\;\$SIG\{CHLD\}\=\"IGNORE\"\;my\$zip\=\(grep\{-x\$_\}\"/usr/local/bin/bzip2\"\)\[0\]\|\|\"bzip2\"\;open3\(\$in,\$out,\"\>\&STDERR\",\$zip,\"-dc\"\)\;if\(my\$perlpid\=fork\)\{close\$in\;\$eval\=join\"\",\<\$out\>\;close\$out\;\}else\{close\$out\;print\$in\(decode_base64\(join\"\",@ARGV\)\)\;close\$in\;exit\;\}wait\;\$SIG\{CHLD\}\=\$chld\;eval\$eval\; base64
|
||||||
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . ./parallel.file.'
|
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . ./parallel.file.'
|
||||||
'newlineX.out
|
'newlineX.out
|
||||||
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . ./parallel.file.'
|
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . ./parallel.file.'
|
||||||
|
@ -90,7 +90,7 @@ Input for ssh
|
||||||
'newlineX.out2; sh -c rmdir\ ./tmp/\ ./\ 2\>/dev/null\;
|
'newlineX.out2; sh -c rmdir\ ./tmp/\ ./\ 2\>/dev/null\;
|
||||||
-l parallel one-server -- mkdir -p ./.
|
-l parallel one-server -- mkdir -p ./.
|
||||||
-l parallel one-server rsync --server -lDrRze.iLsfx . ./.
|
-l parallel one-server rsync --server -lDrRze.iLsfx . ./.
|
||||||
-l parallel one-server -- exec perl -e @GNU_Parallel\=split/_/,\"use_IPC::Open3\;_use_MIME::Base64\"\;eval\"@GNU_Parallel\"\;\$SIG\{CHLD\}\=\"IGNORE\"\;my\$zip\=\(grep\{-x\$_\}\"/usr/local/bin/bzip2\"\)\[0\]\|\|\"bzip2\"\;open3\(\$in,\$out,\"\>\&STDERR\",\$zip,\"-dc\"\)\;if\(my\$perlpid\=fork\)\{close\$in\;\$eval\=join\"\",\<\$out\>\;close\$out\;\}else\{close\$out\;print\$in\(decode_base64\(join\"\",@ARGV\)\)\;close\$in\;exit\;\}wait\;eval\$eval\; base64
|
-l parallel one-server -- exec perl -e @GNU_Parallel\=split/_/,\"use_IPC::Open3\;_use_MIME::Base64\"\;eval\"@GNU_Parallel\"\;\$chld\=\$SIG\{CHLD\}\;\$SIG\{CHLD\}\=\"IGNORE\"\;my\$zip\=\(grep\{-x\$_\}\"/usr/local/bin/bzip2\"\)\[0\]\|\|\"bzip2\"\;open3\(\$in,\$out,\"\>\&STDERR\",\$zip,\"-dc\"\)\;if\(my\$perlpid\=fork\)\{close\$in\;\$eval\=join\"\",\<\$out\>\;close\$out\;\}else\{close\$out\;print\$in\(decode_base64\(join\"\",@ARGV\)\)\;close\$in\;exit\;\}wait\;\$SIG\{CHLD\}\=\$chld\;eval\$eval\; base64
|
||||||
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . ./parallel.file.'
|
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . ./parallel.file.'
|
||||||
'newlineX.out
|
'newlineX.out
|
||||||
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . ./parallel.file.'
|
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . ./parallel.file.'
|
||||||
|
|
|
@ -5,25 +5,25 @@
|
||||||
centos3.tange.dk
|
centos3.tange.dk
|
||||||
hostname; echo 1
|
hostname; echo 1
|
||||||
hostname; echo 1
|
hostname; echo 1
|
||||||
nlv
|
redhat9.tange.dk
|
||||||
### Test $PARALLEL - multi line
|
### Test $PARALLEL - multi line
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
centos3.tange.dk
|
centos3.tange.dk
|
||||||
hostname; echo 1
|
hostname; echo 1
|
||||||
hostname; echo 1
|
hostname; echo 1
|
||||||
nlv
|
redhat9.tange.dk
|
||||||
### Test ~/.parallel/config - single line
|
### Test ~/.parallel/config - single line
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
centos3.tange.dk
|
centos3.tange.dk
|
||||||
hostname; echo 1
|
hostname; echo 1
|
||||||
hostname; echo 1
|
hostname; echo 1
|
||||||
nlv
|
redhat9.tange.dk
|
||||||
### Test ~/.parallel/config - multi line
|
### Test ~/.parallel/config - multi line
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
centos3.tange.dk
|
centos3.tange.dk
|
||||||
hostname; echo 1
|
hostname; echo 1
|
||||||
hostname; echo 1
|
hostname; echo 1
|
||||||
nlv
|
redhat9.tange.dk
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
### Test --trc with space added in filename
|
|
||||||
original
|
|
||||||
### Test --trc with >|< added in filename
|
|
||||||
original
|
|
||||||
### Test --return with fixed string (Gave undef warnings)
|
|
||||||
OK
|
|
||||||
### bug #35427: quoting of {2} broken for --onall
|
|
||||||
/bin/ls
|
|
|
@ -1,13 +1,13 @@
|
||||||
echo '### Test --return of weirdly named file'
|
echo '### Test --return of weirdly named file'
|
||||||
### Test --return of weirdly named file
|
### Test --return of weirdly named file
|
||||||
stdout parallel --return {} -vv -S parallel\@parallel-server3 echo '>'{} ::: 'aa<${#}" b' | perl -pe 's/\S*parallel-server\S*/one-server/;s:[a-z+=/\\0-9]{500,}:base64:i;'; rm 'aa<${#}" b'
|
stdout parallel --return {} -vv -S parallel\@parallel-server1 echo '>'{} ::: 'aa<${#}" b' | perl -pe 's/\S*parallel-server\S*/one-server/;s:[a-z+=/\\0-9]{500,}:base64:i;'; rm 'aa<${#}" b'
|
||||||
ssh -l parallel one-server -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;eval\\\$eval\\\; base64;_EXIT_status=$?; mkdir -p ./. && rsync --protocol 30 --rsync-path=cd\ ././.\;\ rsync -rlDzR -essh\ -l\ parallel parallel-server3:./aa\\\<\\\$\\\{\\\#\\\}\\\"\\\ b ./.; exit $_EXIT_status;
|
ssh -l parallel one-server -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$chld\\\=\\\$SIG\\\{CHLD\\\}\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\$chld\\\;eval\\\$eval\\\; base64;_EXIT_status=$?; mkdir -p ./. && rsync --protocol 30 --rsync-path=cd\ ././.\;\ rsync -rlDzR -essh\ -l\ parallel parallel-server1:./aa\\\<\\\$\\\{\\\#\\\}\\\"\\\ b ./.; exit $_EXIT_status;
|
||||||
echo '### Test if remote login shell is csh'
|
echo '### Test if remote login shell is csh'
|
||||||
### Test if remote login shell is csh
|
### Test if remote login shell is csh
|
||||||
stdout parallel -k -vv -S csh@localhost 'echo $PARALLEL_PID $PARALLEL_SEQ {}| wc -w' ::: a b c | perl -pe 's/\S*parallel-server\S*/one-server/;s:[a-z+=/\\0-9]{500,}:base64:i;'
|
stdout parallel -k -vv -S csh@localhost 'echo $PARALLEL_PID $PARALLEL_SEQ {}| wc -w' ::: a b c | perl -pe 's/\S*parallel-server\S*/one-server/;s:[a-z+=/\\0-9]{500,}:base64:i;'
|
||||||
ssh -l csh localhost -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;eval\\\$eval\\\; base64;
|
ssh -l csh localhost -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$chld\\\=\\\$SIG\\\{CHLD\\\}\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\$chld\\\;eval\\\$eval\\\; base64;
|
||||||
3
|
3
|
||||||
ssh -l csh localhost -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;eval\\\$eval\\\; base64;
|
ssh -l csh localhost -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$chld\\\=\\\$SIG\\\{CHLD\\\}\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\$chld\\\;eval\\\$eval\\\; base64;
|
||||||
3
|
3
|
||||||
ssh -l csh localhost -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;eval\\\$eval\\\; base64;
|
ssh -l csh localhost -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$chld\\\=\\\$SIG\\\{CHLD\\\}\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\$chld\\\;eval\\\$eval\\\; base64;
|
||||||
3
|
3
|
||||||
|
|
Loading…
Reference in a new issue