parallel: Bugfix for -k --timeout used in --filter-host.

--sshloginfile is now searched for in . too.
--timeout more efficient.
Passes testsuite.
This commit is contained in:
Ole Tange 2013-08-16 13:11:35 +02:00
parent 96ba577d85
commit be6fe3846f
15 changed files with 75 additions and 533 deletions

View file

@ -118,7 +118,7 @@ if($opt::filter_hosts and (@opt::sshlogin or @opt::sshloginfile)) {
my ($fh, $tmpfile) = ::tempfile(SUFFIX => ".ssh");
print $fh @cores, @cpus, @maxline, @echo;
close $fh;
my $cmd = "cat $tmpfile | $0 -j0 -s 1000 --joblog - --plain --tag --tagstring {1} --colsep '\t' -k eval {2} 2>/dev/null";
my $cmd = "cat $tmpfile | $0 -j0 --timeout 5 -s 1000 --joblog - --plain --tag --tagstring {1} --colsep '\t' -k eval {2} 2>/dev/null";
::debug($cmd."\n");
open(my $host_fh, "-|", $cmd) || ::die_bug("parallel host check: $cmd");
my (%ncores, %ncpus, %time_to_login, %maxlen, %echo);
@ -135,18 +135,21 @@ if($opt::filter_hosts and (@opt::sshlogin or @opt::sshloginfile)) {
# Get server from: eval true server\;
$col[8] =~ /eval true..([^;]+).;/ or ::die_bug("col8 does not contain host: $col[8]");
my $host = $1;
if($col[6] eq "255") {
# signal == 255: ssh failed
$host =~ s/\\//g;
$Global::host{$host} or next;
if($col[6] eq "255" or $col[7] eq "15") {
# exit == 255 or signal == 15: ssh failed
# Remove sshlogin
delete $Global::host{$col[1]};
::debug("--filtered $host\n");
delete $Global::host{$host};
} elsif($col[6] eq "127") {
# signal == 127: parallel not installed remote
# Set ncpus and ncores = 1
::warning("Could not figure out ",
"number of cpus on $col[1]. Using 1.\n");
$ncores{$col[1]} = 1;
$ncpus{$col[1]} = 1;
$maxlen{$col[1]} = Limits::Command::max_length();
"number of cpus on $host. Using 1.\n");
$ncores{$host} = 1;
$ncpus{$host} = 1;
$maxlen{$host} = Limits::Command::max_length();
} elsif($col[0] =~ /^\d+$/ and $Global::host{$host}) {
# Remember how log it took to log in
# 2 : 1372607672.654 0.675 0 0 0 0 eval true\ m\;ssh\ m\ echo
@ -728,7 +731,7 @@ sub get_options_from_array {
sub parse_options {
# Returns: N/A
# Defaults:
$Global::version = 20130815;
$Global::version = 20130816;
$Global::progname = 'parallel';
$Global::infinity = 2**31;
$Global::debug = 0;
@ -1852,8 +1855,12 @@ sub read_sshloginfile {
$close = 0;
} else {
if(not open($in_fh, "<", $file)) {
::error("Cannot open $file.\n");
::wait_and_exit(255);
# Try the filename
if(not open($in_fh, "<", $ENV{'HOME'}."/.parallel/".$file)) {
# Try prepending ~/.parallel
::error("Cannot open $file.\n");
::wait_and_exit(255);
}
}
}
while(<$in_fh>) {
@ -3831,9 +3838,9 @@ sub runtime {
sub endtime {
# Returns:
# UNIX-timestamp this job ended
# now if not ended yet
# 0 if not ended yet
my $self = shift;
return ($self->{'endtime'} || ::now());
return ($self->{'endtime'} || 0);
}
sub set_endtime {
@ -3853,7 +3860,7 @@ sub kill {
my $self = shift;
my @family_pids = $self->family_pids();
# Record this jobs as failed
$self->set_exitstatus(1);
$self->set_exitstatus(-1);
# Send two TERMs to give time to clean up
for my $signal ("TERM", "TERM", "KILL") {
my $alive = 0;
@ -3864,8 +3871,15 @@ sub kill {
$alive = 1;
}
}
# Wait 200 ms between TERMs - but only if any pids are alive
if($signal eq "TERM" and $alive) { ::usleep(200); }
if($signal eq "TERM" and $alive) {
# Wait up to 200 ms between TERMs - but only if any pids are alive
my $sleep = 1;
for (my $sleepsum = 0; kill 0, $family_pids[0] and $sleepsum < 200;
$sleepsum += $sleep) {
$sleep = ::reap_usleep($sleep);
}
}
}
}
@ -5895,7 +5909,11 @@ sub process_timeouts {
# $self->{'queue'} is sorted by start time
while (@{$self->{'queue'}}) {
my $job = $self->{'queue'}[0];
if($job->timedout($self->{'delta_time'})) {
if($job->endtime()) {
# Job already finished. No need to timeout the job
# This could be because of --keep-order
shift @{$self->{'queue'}};
} elsif($job->timedout($self->{'delta_time'})) {
# Need to shift off queue before kill
# because kill calls usleep that calls process_timeouts
shift @{$self->{'queue'}};

View file

@ -9,4 +9,7 @@ echo '### --env _'
echo '### --env _ with explicit mentioning of normally ignored var $PATH'
fUbAr="OK FUBAR" parallel -S csh@lo --env PATH,_ echo '$fUbAr $PATH' ::: test
echo '### --filter-hosts --slf <()'
parallel --nonall --filter-hosts --slf <(echo localhost) echo OK
EOF

View file

@ -27,8 +27,11 @@ echo '### bug #39787: --xargs broken'
perl -e 'for(1..30000){print "$_\n"}' | nice parallel --xargs -k echo | perl -ne 'print length $_,"\n"'
echo '### --delay should grow by 2 sec per arg'
stdout /usr/bin/time -f %e parallel --delay 2 true ::: 1 2 | perl -ne '$_ >= 2 and $_ <= 4 and print "OK\n"'
stdout /usr/bin/time -f %e parallel --delay 2 true ::: 1 2 3 | perl -ne '$_ >= 4 and $_ <= 6 and print "OK\n"'
stdout /usr/bin/time -f %e parallel --delay 2 true ::: 1 2 | perl -ne '$_ >= 2 and $_ <= 5 and print "OK\n"'
stdout /usr/bin/time -f %e parallel --delay 2 true ::: 1 2 3 | perl -ne '$_ >= 4 and $_ <= 7 and print "OK\n"'
echo '### Exit value should not be affected if an earlier job times out'
parallel -j2 --timeout 1 --joblog - -k ::: "sleep 10" "exit 255" | field 7
EOF

View file

@ -5,7 +5,7 @@ parallel --joblog /tmp/parallel_joblog_exitval 'sleep {} && echo sleep was not k
parallel --joblog /tmp/parallel_joblog_signal 'sleep {}' ::: 100 2>/dev/null &
sleep 1
killall -6 sleep
sleep 1.5
sleep 2
grep -q 134 /tmp/parallel_joblog_exitval && echo exitval OK
grep -q '[^0-9]6[^0-9]' /tmp/parallel_joblog_signal && echo signal OK

View file

@ -2,9 +2,9 @@
P_ALL="vax freebsd solaris openbsd netbsd debian alpha aix redhat hpux ultrix qnx irix tru64 openindiana suse openstep mandriva ubuntu scosysv unixware dragonfly centos miros hurd minix raspberrypi"
P_NOTWORKING="vax alpha openstep"
P_NOTWORKING_YET="ultrix tru64"
P_NOTWORKING_YET="ultrix tru64 irix"
P_WORKING="freebsd solaris openbsd netbsd debian aix redhat hpux qnx irix openindiana suse mandriva ubuntu scosysv unixware dragonfly centos miros hurd minix raspberrypi"
P_WORKING="freebsd solaris openbsd netbsd debian aix redhat hpux qnx openindiana suse mandriva ubuntu scosysv unixware dragonfly centos miros hurd minix raspberrypi"
P="$P_WORKING"
POLAR=`parallel -k echo {}.polarhome.com ::: $P`

View file

@ -11,3 +11,6 @@ echo 'ssh "$@"; echo "$@" >>/tmp/myssh2-run' >/tmp/myssh2
chmod 755 /tmp/myssh1 /tmp/myssh2
seq 1 100 | parallel --sshlogin "/tmp/myssh1 $SSHLOGIN1, /tmp/myssh2 $SSHLOGIN2" \
-j10000% -k echo
echo '### --filter-hosts - OK, non-such-user, connection refused, wrong host'
parallel --nonall --filter-hosts -S localhost,NoUser@localhost,154.54.72.206,"ssh 5.5.5.5" hostname

View file

@ -5,7 +5,8 @@ SERVER2=parallel-server2
SSHLOGIN1=parallel@$SERVER1
SSHLOGIN2=parallel@$SERVER2
export PARALLEL=-j8
export PARALLEL=-j0
#export PARALLEL="--sshdelay 0.3"
# Make sure sort order is the same
export LANG=C
@ -14,7 +15,8 @@ echo '### Test --transfer --return --cleanup'
rm -rf /tmp/parallel.file*
stdout ssh $SSHLOGIN1 rm -rf 'tmp/parallel.file*' '/tmp/parallel.file*'
stdout ssh $SSHLOGIN2 rm -rf 'tmp/parallel.file*' '/tmp/parallel.file*'
(seq 1 3;echo '>fire';seq 5 10; /bin/echo ' : & ) \n*.jpg'; echo '/./sub dir'; seq 13 20) >/tmp/test17
# (seq 1 3;echo '>fire';seq 5 10; /bin/echo ' : & ) \n*.jpg'; echo '/./sub dir'; seq 13 20) >/tmp/test17
(echo '>fire';/bin/echo ' : & ) \n*.jpg'; echo '/./sub dir') >/tmp/test17
echo '# Create some weirdly files in /tmp'
mkdir -p /tmp/parallel.file
cat /tmp/test17 | parallel -k /bin/echo file{} '>'/tmp/parallel.file{}.file

View file

@ -10,3 +10,5 @@ Block_end
OK FUBAR /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games test
### --env _ with explicit mentioning of normally ignored var $PATH
OK FUBAR /home/tange/bin:/home/tange/bin:/home/tange/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/sbin:/usr/sbin:/home/tange/terminals/data-import:/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin:/home/tange/bin:/sbin:/usr/sbin:/home/tange/terminals/data-import:/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin:/home/tange/bin test
### --filter-hosts --slf <()
OK

View file

@ -265,7 +265,7 @@ o
1 1 130001
1 1 130001
1 1 130001
parallel: Command line too long (260009 >= 131071) at number 9: 10...
parallel: Error: Command line too long (260009 >= 131071) at number 9: 10...
### bug #37042: -J foo is taken from the whole command line - not just the part before the command
foo tag_with_foo
a tag_with_a

View file

@ -71,7 +71,7 @@ y
### -i -s26 -0 echo from \{\} to x{}y < items-0.xi
xargs: argument list too long
from one to xoney
parallel: Command line too long (42 >= 26) at number 2:
parallel: Error: Command line too long (42 >= 26) at number 2:
...
### -l -0 echo < ldata-0.xi
1 22 333 4444
@ -808,7 +808,7 @@ with 'single quotes' as well.
/src/gnu/autoconf-1.11/texinfo.tex
### -s6 echo < files.xi
xargs: argument line too long
parallel: Command line too long (27 >= 6) at number 1: /src/gnu/autoconf-1.11...
parallel: Error: Command line too long (27 >= 6) at number 1: /src/gnu/autoconf-1.11...
### -iARG -s86 echo ARG is xARGx < files.xi
/src/gnu/autoconf-1.11 is x/src/gnu/autoconf-1.11x
/src/gnu/autoconf-1.11/README is x/src/gnu/autoconf-1.11/READMEx
@ -974,7 +974,7 @@ from: can't read /var/mail/{}
### -i -s26 echo from \{\} to x{}y < items.xi
xargs: argument list too long
from dumb to xdumby
parallel: Command line too long (36 >= 26) at number 1: ...
parallel: Error: Command line too long (36 >= 26) at number 1: ...
### -i__ echo FIRST __ IS OK < quotes.xi
FIRST this is IS OK
FIRST quoted stuff IS OK

View file

@ -48,3 +48,7 @@ O. Tange (2011): GNU Parallel - The Command-Line Power Tool,
### --delay should grow by 2 sec per arg
OK
OK
### Exit value should not be affected if an earlier job times out
Exitval
-1
255

View file

@ -9,7 +9,6 @@ copy_to_host aix.polarhome.com
copy_to_host redhat.polarhome.com
copy_to_host hpux.polarhome.com
copy_to_host qnx.polarhome.com
copy_to_host irix.polarhome.com
copy_to_host openindiana.polarhome.com
copy_to_host suse.polarhome.com
copy_to_host mandriva.polarhome.com
@ -33,7 +32,6 @@ redhat.polarhome.com Works on redhat.polarhome.com
hpux.polarhome.com Works on hpux.polarhome.com
qnx.polarhome.com Works on qnx.polarhome.com
qnx.polarhome.com parallel: Warning: Cannot figure out number of CPU cores. Using 1.
irix.polarhome.com Unknown open() mode '>&=' at bin/parallel line 1346.
openindiana.polarhome.com Works on openindiana.polarhome.com
openindiana.polarhome.com parallel: Warning: Cannot figure out number of CPU cores. Using 1.
suse.polarhome.com Works on suse.polarhome.com

View file

@ -99,3 +99,5 @@
98
99
100
### --filter-hosts - OK, non-such-user, connection refused, wrong host
hk

View file

@ -83,14 +83,14 @@ a_b c
d
e
### test too long args
parallel: Command line too long (1000005 >= 131071) at number 1: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
parallel: Error: Command line too long (1000005 >= 131071) at number 1: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
xargs: argument line too long
1 2
3 4
5 6
7 8
9 10
parallel: Command line too long (1000007 >= 10) at number 5: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
parallel: Error: Command line too long (1000007 >= 10) at number 5: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
1 2
3 4
5 6
@ -102,20 +102,20 @@ xargs: argument line too long
5 6
7 8
9 10
parallel: Command line too long (1000007 >= 10) at number 5: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
parallel: Error: Command line too long (1000007 >= 10) at number 5: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
### Test -x
1 2
3 4
5 6
7 8
9 10
parallel: Command line too long (10 >= 10) at number 5: 12345...
parallel: Error: Command line too long (10 >= 10) at number 5: 12345...
1 2
3 4
5 6
7 8
9 10
parallel: Command line too long (10 >= 10) at number 5: 12345...
parallel: Error: Command line too long (10 >= 10) at number 5: 12345...
1 2
3 4
5 6

View file

@ -1,95 +1,27 @@
### Test --transfer --return --cleanup
# Create some weirdly files in /tmp
### --transfer - abspath
file1
file2
file3
file>fire
file5
file6
file7
file8
file9
file10
file : & ) \n*.jpg
file/./sub dir
file13
file14
file15
file16
file17
file18
file19
file20
good if no file
ls: /tmp/parallel.file*: No such file or directory
### --transfer - relpath
file1
file2
file3
file>fire
file5
file6
file7
file8
file9
file10
file : & ) \n*.jpg
file/./sub dir
file13
file14
file15
file16
file17
file18
file19
file20
good if no file
ls: tmp/parallel.file*: No such file or directory
### --transfer --cleanup - abspath
file1
file2
file3
file>fire
file5
file6
file7
file8
file9
file10
file : & ) \n*.jpg
file/./sub dir
file13
file14
file15
file16
file17
file18
file19
file20
good if no file
ls: /tmp/parallel.file*: No such file or directory
### --transfer --cleanup - relpath
file1
file2
file3
file>fire
file5
file6
file7
file8
file9
file10
file : & ) \n*.jpg
file/./sub dir
file13
file14
file15
file16
file17
file18
file19
file20
good if no file
ls: tmp/parallel.file*: No such file or directory
OK
@ -98,84 +30,16 @@ OK
### --return - abspath
/tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.out
/tmp/parallel.file1.out
/tmp/parallel.file10.out
/tmp/parallel.file13.out
/tmp/parallel.file14.out
/tmp/parallel.file15.out
/tmp/parallel.file16.out
/tmp/parallel.file17.out
/tmp/parallel.file18.out
/tmp/parallel.file19.out
/tmp/parallel.file2.out
/tmp/parallel.file20.out
/tmp/parallel.file3.out
/tmp/parallel.file5.out
/tmp/parallel.file6.out
/tmp/parallel.file7.out
/tmp/parallel.file8.out
/tmp/parallel.file9.out
/tmp/parallel.file>fire.out
### --return - relpath
tmp/parallel.file : & ) \n*.jpg.out
tmp/parallel.file/sub dir.out
tmp/parallel.file1.out
tmp/parallel.file10.out
tmp/parallel.file13.out
tmp/parallel.file14.out
tmp/parallel.file15.out
tmp/parallel.file16.out
tmp/parallel.file17.out
tmp/parallel.file18.out
tmp/parallel.file19.out
tmp/parallel.file2.out
tmp/parallel.file20.out
tmp/parallel.file3.out
tmp/parallel.file5.out
tmp/parallel.file6.out
tmp/parallel.file7.out
tmp/parallel.file8.out
tmp/parallel.file9.out
tmp/parallel.file>fire.out
### --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.out
tmp/parallel.file13.file.done
tmp/parallel.file13.out
tmp/parallel.file14.file.done
tmp/parallel.file14.out
tmp/parallel.file15.file.done
tmp/parallel.file15.out
tmp/parallel.file16.file.done
tmp/parallel.file16.out
tmp/parallel.file17.file.done
tmp/parallel.file17.out
tmp/parallel.file18.file.done
tmp/parallel.file18.out
tmp/parallel.file19.file.done
tmp/parallel.file19.out
tmp/parallel.file2.file.done
tmp/parallel.file2.out
tmp/parallel.file20.file.done
tmp/parallel.file20.out
tmp/parallel.file3.file.done
tmp/parallel.file3.out
tmp/parallel.file5.file.done
tmp/parallel.file5.out
tmp/parallel.file6.file.done
tmp/parallel.file6.out
tmp/parallel.file7.file.done
tmp/parallel.file7.out
tmp/parallel.file8.file.done
tmp/parallel.file8.out
tmp/parallel.file9.file.done
tmp/parallel.file9.out
tmp/parallel.file>fire.file.done
tmp/parallel.file>fire.out
### --return --cleanup - abspath
@ -183,40 +47,6 @@ tmp/parallel.file>fire.out
/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.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out
good if no file
@ -225,40 +55,6 @@ 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.out
tmp/parallel.file13.file.done
tmp/parallel.file13.out
tmp/parallel.file14.file.done
tmp/parallel.file14.out
tmp/parallel.file15.file.done
tmp/parallel.file15.out
tmp/parallel.file16.file.done
tmp/parallel.file16.out
tmp/parallel.file17.file.done
tmp/parallel.file17.out
tmp/parallel.file18.file.done
tmp/parallel.file18.out
tmp/parallel.file19.file.done
tmp/parallel.file19.out
tmp/parallel.file2.file.done
tmp/parallel.file2.out
tmp/parallel.file20.file.done
tmp/parallel.file20.out
tmp/parallel.file3.file.done
tmp/parallel.file3.out
tmp/parallel.file5.file.done
tmp/parallel.file5.out
tmp/parallel.file6.file.done
tmp/parallel.file6.out
tmp/parallel.file7.file.done
tmp/parallel.file7.out
tmp/parallel.file8.file.done
tmp/parallel.file8.out
tmp/parallel.file9.file.done
tmp/parallel.file9.out
tmp/parallel.file>fire.file.done
tmp/parallel.file>fire.out
good if no file
@ -269,40 +65,6 @@ OK
/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.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out
good if no file
@ -313,40 +75,6 @@ OK
/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.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out
good if no file
@ -357,40 +85,6 @@ OK
/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.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out
good if no file
@ -403,40 +97,6 @@ OK
/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.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out
ls: tmp/parallel.file*: No such file or directory
@ -448,40 +108,6 @@ OK
/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.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out
good if no file
@ -492,40 +118,6 @@ 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.out
tmp/parallel.file13.file.done
tmp/parallel.file13.out
tmp/parallel.file14.file.done
tmp/parallel.file14.out
tmp/parallel.file15.file.done
tmp/parallel.file15.out
tmp/parallel.file16.file.done
tmp/parallel.file16.out
tmp/parallel.file17.file.done
tmp/parallel.file17.out
tmp/parallel.file18.file.done
tmp/parallel.file18.out
tmp/parallel.file19.file.done
tmp/parallel.file19.out
tmp/parallel.file2.file.done
tmp/parallel.file2.out
tmp/parallel.file20.file.done
tmp/parallel.file20.out
tmp/parallel.file3.file.done
tmp/parallel.file3.out
tmp/parallel.file5.file.done
tmp/parallel.file5.out
tmp/parallel.file6.file.done
tmp/parallel.file6.out
tmp/parallel.file7.file.done
tmp/parallel.file7.out
tmp/parallel.file8.file.done
tmp/parallel.file8.out
tmp/parallel.file9.file.done
tmp/parallel.file9.out
tmp/parallel.file>fire.file.done
tmp/parallel.file>fire.out
good if no file
@ -538,103 +130,18 @@ OK
/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.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out
good if no file
ls: /tmp/parallel.file*: No such file or directory
OK
### --transfer --cleanup - multiple argument files
cat /tmp/parallel.file\>fire.file tmp/parallel.file1.file
cat /tmp/parallel.file\>fire.file tmp/parallel.file\>fire.file
file>fire
file1
cat /tmp/parallel.file9.file tmp/parallel.file2.file
file9
file2
cat /tmp/parallel.file8.file tmp/parallel.file3.file
file8
file3
cat /tmp/parallel.file7.file tmp/parallel.file\>fire.file
file7
file>fire
cat /tmp/parallel.file6.file tmp/parallel.file5.file
file6
file5
cat /tmp/parallel.file5.file tmp/parallel.file6.file
file5
file6
cat /tmp/parallel.file3.file tmp/parallel.file7.file
file3
file7
cat /tmp/parallel.file20.file tmp/parallel.file8.file
file20
file8
cat /tmp/parallel.file2.file tmp/parallel.file9.file
file2
file9
cat /tmp/parallel.file19.file tmp/parallel.file10.file
file19
file10
cat /tmp/parallel.file18.file tmp/parallel.file\ :\ \&\ \)\ \\n\*.jpg.file
file18
file : & ) \n*.jpg
cat /tmp/parallel.file17.file tmp/parallel.file/./sub\ dir.file
file17
cat /tmp/parallel.file/./sub\ dir.file tmp/parallel.file\ :\ \&\ \)\ \\n\*.jpg.file
file/./sub dir
cat /tmp/parallel.file16.file tmp/parallel.file13.file
file16
file13
cat /tmp/parallel.file15.file tmp/parallel.file14.file
file15
file14
cat /tmp/parallel.file14.file tmp/parallel.file15.file
file14
file15
cat /tmp/parallel.file13.file tmp/parallel.file16.file
file13
file16
cat /tmp/parallel.file10.file tmp/parallel.file17.file
file10
file17
cat /tmp/parallel.file1.file tmp/parallel.file18.file
file1
file18
cat /tmp/parallel.file/./sub\ dir.file tmp/parallel.file19.file
file/./sub dir
file19
cat /tmp/parallel.file\ :\ \&\ \)\ \\n\*.jpg.file tmp/parallel.file20.file
file : & ) \n*.jpg
file20
cat /tmp/parallel.file\ :\ \&\ \)\ \\n\*.jpg.file tmp/parallel.file/./sub\ dir.file
file : & ) \n*.jpg
file/./sub dir