mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-25 23:47:53 +00:00
parallel: added '-' as valid input file for -S. Fixed bug for empty lines '| parallel'.
This commit is contained in:
parent
64f0579195
commit
ac928cf936
|
@ -1,30 +1,8 @@
|
||||||
parallel echo {} ::: 1 2 3
|
|
||||||
src/parallel echo {} ::: 1 2 3
|
|
||||||
parallel echo a{}b ::: 1 2 3
|
|
||||||
src/parallel echo a{}b ::: 1 2 3
|
|
||||||
parallel echo a{}b ::: 1/Q.e 2/W.t 3/E.f
|
|
||||||
src/parallel echo a{}b ::: 1/Q.e 2/W.t 3/E.f
|
|
||||||
parallel echo a{.}b ::: 1/Q.e 2/W.t 3/E.f
|
|
||||||
src/parallel echo a{.}b ::: 1/Q.e 2/W.t 3/E.f
|
|
||||||
parallel echo a{.}b {//} ::: 1/Q.e 2/W.t 3/E.f
|
|
||||||
src/parallel echo a{.}b {//} ::: 1/Q.e 2/W.t 3/E.f
|
|
||||||
parallel echo a{.}b {//}-{/.} ::: 1/Q.e 2/W.t 3/E.f
|
|
||||||
src/parallel echo a{.}b {//}-{/.} ::: 1/Q.e 2/W.t 3/E.f
|
|
||||||
parallel --xapply echo a{3.}b {//}-{/.} ::: 1/Q.e 2/W.t 3/E.f
|
|
||||||
src/parallel --xapply echo a{3.}b {//}-{/.} ::: 1/Q.e 2/W.t 3/E.f
|
|
||||||
parallel --xapply echo a{3.}b {//}-{/.} ::: 1/Q.e ::: 2/W.t ::: 3/E.f
|
|
||||||
src/parallel --xapply echo a{3.}b {//}-{/.} ::: 1/Q.e ::: 2/W.t ::: 3/E.f
|
|
||||||
|
|
||||||
|
BUG:
|
||||||
|
(echo echo a ; echo ; echo echo b) | parallel -k
|
||||||
|
|
||||||
|
|
||||||
Fixed bug in {n//}
|
|
||||||
|
|
||||||
-S - should read --sshloginfile from stdin
|
|
||||||
|
|
||||||
-X for multiple input sources:
|
|
||||||
parallel -X echo mkdir -p dir-{1} dir-{1}/subdir-{2} :::: <(seq 1 5) <(seq 5 8)
|
|
||||||
parallel -X echo mkdir -p dir-{1//} dir-{1.}/subdir-{2} ::: a/foo.d b/bar.d :::: <(seq 5 8)
|
|
||||||
|
|
||||||
Dont start:
|
Dont start:
|
||||||
|
|
||||||
* load
|
* load
|
||||||
|
|
|
@ -163,6 +163,7 @@ cc:Peter Simons <simons@cryp.to>, Sandro Cazzaniga <kharec@mandriva.org>,
|
||||||
Christian Faulhammer <fauli@gentoo.org>, Ryoichiro Suzuki <ryoichiro.suzuki@gmail.com>,
|
Christian Faulhammer <fauli@gentoo.org>, Ryoichiro Suzuki <ryoichiro.suzuki@gmail.com>,
|
||||||
Jesse Alama <jesse.alama@gmail.com>
|
Jesse Alama <jesse.alama@gmail.com>
|
||||||
|
|
||||||
|
Libre.fm? Viva? VTEC? Yemen?
|
||||||
Subject: GNU Parallel 20110622 ('XXX') released
|
Subject: GNU Parallel 20110622 ('XXX') released
|
||||||
|
|
||||||
GNU Parallel 20116022 ('XXX') has been released. It is
|
GNU Parallel 20116022 ('XXX') has been released. It is
|
||||||
|
@ -180,6 +181,9 @@ New in this release:
|
||||||
(standard input), so is possible to do:
|
(standard input), so is possible to do:
|
||||||
parallel --nonall -S computer1,computer2 uptime
|
parallel --nonall -S computer1,computer2 uptime
|
||||||
|
|
||||||
|
* Context replace now works with multiple input sources:
|
||||||
|
parallel -X echo {1}-{2} ::: 1 2 3 ::: a b c
|
||||||
|
|
||||||
* --noswap do not start a job on a server that is swapping.
|
* --noswap do not start a job on a server that is swapping.
|
||||||
|
|
||||||
* Article: Parallel processing without Hadoop!
|
* Article: Parallel processing without Hadoop!
|
||||||
|
@ -188,8 +192,11 @@ New in this release:
|
||||||
* Article in Linux Magazine (Spanish). Thanks to Ben Martin.
|
* Article in Linux Magazine (Spanish). Thanks to Ben Martin.
|
||||||
http://www.linux-magazine.es/issue/67/
|
http://www.linux-magazine.es/issue/67/
|
||||||
|
|
||||||
|
* Blog post in Japanese. Thanks to Naoya Nakazawa.
|
||||||
|
http://www.sssg.org/blogs/naoya/archives/2003
|
||||||
|
|
||||||
* Blog post in English. Thanks to Dagon.
|
* Blog post in English. Thanks to Dagon.
|
||||||
hekate.homeip.net/2011/05/29/
|
http://hekate.homeip.net/2011/05/29/
|
||||||
|
|
||||||
* Bug fixes and man page updates.
|
* Bug fixes and man page updates.
|
||||||
|
|
||||||
|
|
26
src/parallel
26
src/parallel
|
@ -1349,12 +1349,18 @@ sub __REMOTE_SSH__ {}
|
||||||
sub read_sshloginfile {
|
sub read_sshloginfile {
|
||||||
# Returns: N/A
|
# Returns: N/A
|
||||||
my $file = shift;
|
my $file = shift;
|
||||||
|
my $close = 1;
|
||||||
if($file eq "..") {
|
if($file eq "..") {
|
||||||
$file = $ENV{'HOME'}."/.parallel/sshloginfile";
|
$file = $ENV{'HOME'}."/.parallel/sshloginfile";
|
||||||
}
|
}
|
||||||
if(not open(IN, $file)) {
|
if($file eq "-") {
|
||||||
print $Global::original_stderr "Cannot open $file\n";
|
*IN = *STDIN;
|
||||||
exit(255);
|
$close = 0;
|
||||||
|
} else {
|
||||||
|
if(not open(IN, $file)) {
|
||||||
|
print $Global::original_stderr "Cannot open $file\n";
|
||||||
|
exit(255);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
while(<IN>) {
|
while(<IN>) {
|
||||||
chomp;
|
chomp;
|
||||||
|
@ -1362,7 +1368,9 @@ sub read_sshloginfile {
|
||||||
/^\s*$/ and next;
|
/^\s*$/ and next;
|
||||||
push @Global::sshlogin, $_;
|
push @Global::sshlogin, $_;
|
||||||
}
|
}
|
||||||
close IN;
|
if($close) {
|
||||||
|
close IN;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sub parse_sshlogin {
|
sub parse_sshlogin {
|
||||||
|
@ -1372,7 +1380,7 @@ sub parse_sshlogin {
|
||||||
for my $sshlogin (@Global::sshlogin) {
|
for my $sshlogin (@Global::sshlogin) {
|
||||||
# Split up -S sshlogin,sshlogin
|
# Split up -S sshlogin,sshlogin
|
||||||
for my $s (split /,/, $sshlogin) {
|
for my $s (split /,/, $sshlogin) {
|
||||||
if ($s eq "..") {
|
if ($s eq ".." or $s eq "-") {
|
||||||
read_sshloginfile($s);
|
read_sshloginfile($s);
|
||||||
} else {
|
} else {
|
||||||
push (@login, $s);
|
push (@login, $s);
|
||||||
|
@ -3794,12 +3802,12 @@ sub get {
|
||||||
$self->{'return_files'},
|
$self->{'return_files'},
|
||||||
);
|
);
|
||||||
$cmd_line->populate();
|
$cmd_line->populate();
|
||||||
$self->set_seq($self->seq()+1);
|
|
||||||
::debug("cmd_line->number_of_args ".$cmd_line->number_of_args()."\n");
|
::debug("cmd_line->number_of_args ".$cmd_line->number_of_args()."\n");
|
||||||
if(not $::opt_pipe and $cmd_line->number_of_args() == 0) {
|
if(not $::opt_pipe and ($cmd_line->number_of_args() == 0 or $cmd_line->replaced() eq "")) {
|
||||||
# We did not get more args - maybe at EOF string?
|
# We did not get more args - maybe at EOF string?
|
||||||
return undef;
|
return undef;
|
||||||
} else {
|
} else {
|
||||||
|
$self->set_seq($self->seq()+1);
|
||||||
return ($cmd_line);
|
return ($cmd_line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4112,8 +4120,8 @@ sub nest_get {
|
||||||
next;
|
next;
|
||||||
} else {
|
} else {
|
||||||
# read one
|
# read one
|
||||||
my $arg = read_arg_from_fh($self->{'fhs'}[$fhno])
|
my $arg = read_arg_from_fh($self->{'fhs'}[$fhno]);
|
||||||
|| next; # If we just read an EOF string: Treat this as EOF
|
defined($arg) || next; # If we just read an EOF string: Treat this as EOF
|
||||||
my $len = $#{$self->{'arg_matrix'}[$fhno]} + 1;
|
my $len = $#{$self->{'arg_matrix'}[$fhno]} + 1;
|
||||||
$self->{'arg_matrix'}[$fhno][$len] = $arg;
|
$self->{'arg_matrix'}[$fhno][$len] = $arg;
|
||||||
# make all new combinations
|
# make all new combinations
|
||||||
|
|
|
@ -938,9 +938,9 @@ Do not use the first line of input (used by GNU B<parallel> itself
|
||||||
when called with B<--shebang>).
|
when called with B<--shebang>).
|
||||||
|
|
||||||
|
|
||||||
=item B<-S> I<[ncpu/]sshlogin[,[ncpu/]sshlogin[,...]]>
|
=item B<-S> I<[ncpu/]sshlogin[,[ncpu/]sshlogin[,...]]> (alpha testing)
|
||||||
|
|
||||||
=item B<--sshlogin> I<[ncpu/]sshlogin[,[ncpu/]sshlogin[,...]]>
|
=item B<--sshlogin> I<[ncpu/]sshlogin[,[ncpu/]sshlogin[,...]]> (alpha testing)
|
||||||
|
|
||||||
Distribute jobs to remote computers. The jobs will be run on a list of
|
Distribute jobs to remote computers. The jobs will be run on a list of
|
||||||
remote computers. GNU B<parallel> will determine the number of CPU
|
remote computers. GNU B<parallel> will determine the number of CPU
|
||||||
|
@ -960,8 +960,8 @@ on the local computer.
|
||||||
|
|
||||||
The sshlogin '..' is special, it read sshlogins from ~/.parallel/sshloginfile
|
The sshlogin '..' is special, it read sshlogins from ~/.parallel/sshloginfile
|
||||||
|
|
||||||
The sshlogin '-' is special, too, it read sshlogins stdin (standard input).
|
The sshlogin '-' is special, too, it read sshlogins from stdin
|
||||||
|
(standard input).
|
||||||
|
|
||||||
To specify more sshlogins separate the sshlogins by comma or repeat
|
To specify more sshlogins separate the sshlogins by comma or repeat
|
||||||
the options multiple times.
|
the options multiple times.
|
||||||
|
@ -976,7 +976,7 @@ B<--sshlogin> is often used with B<--transfer>, B<--return>,
|
||||||
B<--cleanup>, and B<--trc>.
|
B<--cleanup>, and B<--trc>.
|
||||||
|
|
||||||
|
|
||||||
=item B<--sshloginfile> I<filename>
|
=item B<--sshloginfile> I<filename> (alpha testing)
|
||||||
|
|
||||||
File with sshlogins. The file consists of sshlogins on separate
|
File with sshlogins. The file consists of sshlogins on separate
|
||||||
lines. Empty lines and lines starting with '#' are ignored. Example:
|
lines. Empty lines and lines starting with '#' are ignored. Example:
|
||||||
|
@ -1002,6 +1002,8 @@ When using a different ssh program the last argument must be the hostname.
|
||||||
The sshloginfile '..' is special, it read sshlogins from
|
The sshloginfile '..' is special, it read sshlogins from
|
||||||
~/.parallel/sshloginfile
|
~/.parallel/sshloginfile
|
||||||
|
|
||||||
|
The sshloginfile '-' is special, too, it read sshlogins from stdin
|
||||||
|
(standard input).
|
||||||
|
|
||||||
=item B<--noswap> (alpha testing)
|
=item B<--noswap> (alpha testing)
|
||||||
|
|
||||||
|
|
|
@ -13,3 +13,6 @@ echo '### Test --keeporder'
|
||||||
|
|
||||||
echo '### Test SIGTERM'
|
echo '### Test SIGTERM'
|
||||||
(sleep 5; killall parallel -TERM) & seq 1 100 | stdout parallel -k -j9 sleep 3';' echo | sort
|
(sleep 5; killall parallel -TERM) & seq 1 100 | stdout parallel -k -j9 sleep 3';' echo | sort
|
||||||
|
|
||||||
|
echo '### Test bug: empty line for | sh with -k'
|
||||||
|
(echo echo a ; echo ; echo echo b) | parallel -k
|
||||||
|
|
|
@ -3,14 +3,17 @@
|
||||||
SERVER1=parallel-server3
|
SERVER1=parallel-server3
|
||||||
SERVER2=parallel-server2
|
SERVER2=parallel-server2
|
||||||
|
|
||||||
|
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -k
|
||||||
echo '### Test --onall'
|
echo '### Test --onall'
|
||||||
parallel --onall -S parallel@$SERVER2,$SERVER1 '(echo {3} {2}) | awk \{print\ \$2}' ::: a b c ::: 1 2 3
|
parallel --onall -S parallel@$SERVER2,$SERVER1 '(echo {3} {2}) | awk \{print\ \$2}' ::: a b c ::: 1 2 3
|
||||||
echo '### Test | --onall'
|
echo '### Test | --onall'
|
||||||
seq 3 | parallel --onall -S parallel@$SERVER2,$SERVER1 '(echo {3} {2}) | awk \{print\ \$2}' ::: a b c :::: -
|
seq 3 | parallel --onall -S parallel@$SERVER2,$SERVER1 '(echo {3} {2}) | awk \{print\ \$2}' ::: a b c :::: -
|
||||||
echo '### Test --onall -u'
|
echo '### Test --onall -u'
|
||||||
parallel --onall -S parallel@$SERVER2,$SERVER1 -u '(echo {3} {2}) | awk \{print\ \$2}' ::: a b c ::: 1 2 3 | sort
|
parallel --onall -S parallel@$SERVER2,$SERVER1 -u '(echo {3} {2}) | awk \{print\ \$2}' ::: a b c ::: 1 2 3 | sort
|
||||||
|
|
||||||
echo '### Test --nonall'
|
echo '### Test --nonall'
|
||||||
parallel --nonall -S parallel@$SERVER2,$SERVER1 'hostname'
|
parallel --nonall -S parallel@$SERVER2,$SERVER1 'hostname'
|
||||||
parallel --nonall -S parallel@$SERVER2,$SERVER1 -u 'hostname;sleep 2;hostname'
|
parallel --nonall -S parallel@$SERVER2,$SERVER1 -u 'hostname;sleep 2;hostname'
|
||||||
|
echo '### Test read sshloginfile from STDIN'
|
||||||
|
echo nlv.pi.dk | parallel -S - --nonall hostname
|
||||||
|
echo nlv.pi.dk | parallel --sshloginfile - --nonall hostname
|
||||||
|
EOF
|
||||||
|
|
|
@ -70,3 +70,5 @@ parallel: sleep 3; echo 15
|
||||||
parallel: sleep 3; echo 16
|
parallel: sleep 3; echo 16
|
||||||
parallel: sleep 3; echo 17
|
parallel: sleep 3; echo 17
|
||||||
parallel: sleep 3; echo 18
|
parallel: sleep 3; echo 18
|
||||||
|
### Test bug: empty line for | sh with -k
|
||||||
|
a
|
||||||
|
|
|
@ -62,3 +62,6 @@ nlv.pi.dk
|
||||||
vh2.pi.dk
|
vh2.pi.dk
|
||||||
nlv.pi.dk
|
nlv.pi.dk
|
||||||
vh2.pi.dk
|
vh2.pi.dk
|
||||||
|
### Test read sshloginfile from STDIN
|
||||||
|
nlv.pi.dk
|
||||||
|
nlv.pi.dk
|
||||||
|
|
Loading…
Reference in a new issue