mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-22 05:57:54 +00:00
parallel: Cache CPU spec and setpgrp method in file. Startup 15% faster.
This commit is contained in:
parent
ebdc4c641a
commit
f8782f43a7
|
@ -222,6 +222,9 @@ Quote of the month:
|
||||||
|
|
||||||
New in this release:
|
New in this release:
|
||||||
|
|
||||||
|
* {= uq() =} will cause the replacement string to be unquoted. Example: parallel echo '{=uq()=}.jpg' ::: '*'
|
||||||
|
|
||||||
|
https://techieroop.com/how-to-run-multiple-bash-scripts-in-parallel/
|
||||||
|
|
||||||
* Bug fixes and man page updates.
|
* Bug fixes and man page updates.
|
||||||
|
|
||||||
|
|
452
src/parallel
452
src/parallel
|
@ -5940,7 +5940,7 @@ sub memfree_recompute() {
|
||||||
# Run the script twice if it gives 0 (typically intermittent error)
|
# Run the script twice if it gives 0 (typically intermittent error)
|
||||||
$self->{'memfree'} = ::qqx($script) || ::qqx($script);
|
$self->{'memfree'} = ::qqx($script) || ::qqx($script);
|
||||||
if(not $self->{'memfree'}) {
|
if(not $self->{'memfree'}) {
|
||||||
::die_bug("Less than 1 byte free");
|
::die_bug("Less than 1 byte memory free");
|
||||||
}
|
}
|
||||||
#::debug("mem","New free:",$self->{'memfree'}," ");
|
#::debug("mem","New free:",$self->{'memfree'}," ");
|
||||||
}
|
}
|
||||||
|
@ -6970,53 +6970,75 @@ sub socket_core_thread() {
|
||||||
# 'active' => #taskset_threads = number of taskset limited cores
|
# 'active' => #taskset_threads = number of taskset limited cores
|
||||||
# }
|
# }
|
||||||
my $cpu;
|
my $cpu;
|
||||||
|
my $cached_cpuspec = $Global::cache_dir . "/tmp/sshlogin/" .
|
||||||
|
::hostname() . "/cpuspec";
|
||||||
|
if(-e $cached_cpuspec and -M $cached_cpuspec < 1) {
|
||||||
|
# Reading cached copy instead of /proc/cpuinfo is 17 ms faster
|
||||||
|
if(open(my $in_fh, "<", $cached_cpuspec)) {
|
||||||
|
::debug("init","Read $cached_cpuspec");
|
||||||
|
$cpu->{'sockets'} = int(<$in_fh>);
|
||||||
|
$cpu->{'cores'} = int(<$in_fh>);
|
||||||
|
$cpu->{'threads'} = int(<$in_fh>);
|
||||||
|
close $in_fh;
|
||||||
|
}
|
||||||
|
}
|
||||||
if ($^O eq 'linux') {
|
if ($^O eq 'linux') {
|
||||||
$cpu = sct_gnu_linux();
|
$cpu = sct_gnu_linux($cpu);
|
||||||
} elsif ($^O eq 'android') {
|
} elsif ($^O eq 'android') {
|
||||||
$cpu = sct_android();
|
$cpu = sct_android($cpu);
|
||||||
} elsif ($^O eq 'freebsd') {
|
} elsif ($^O eq 'freebsd') {
|
||||||
$cpu = sct_freebsd();
|
$cpu = sct_freebsd($cpu);
|
||||||
} elsif ($^O eq 'netbsd') {
|
} elsif ($^O eq 'netbsd') {
|
||||||
$cpu = sct_netbsd();
|
$cpu = sct_netbsd($cpu);
|
||||||
} elsif ($^O eq 'openbsd') {
|
} elsif ($^O eq 'openbsd') {
|
||||||
$cpu = sct_openbsd();
|
$cpu = sct_openbsd($cpu);
|
||||||
} elsif ($^O eq 'gnu') {
|
} elsif ($^O eq 'gnu') {
|
||||||
$cpu = sct_hurd();
|
$cpu = sct_hurd($cpu);
|
||||||
} elsif ($^O eq 'darwin') {
|
} elsif ($^O eq 'darwin') {
|
||||||
$cpu = sct_darwin();
|
$cpu = sct_darwin($cpu);
|
||||||
} elsif ($^O eq 'solaris') {
|
} elsif ($^O eq 'solaris') {
|
||||||
$cpu = sct_solaris();
|
$cpu = sct_solaris($cpu);
|
||||||
} elsif ($^O eq 'aix') {
|
} elsif ($^O eq 'aix') {
|
||||||
$cpu = sct_aix();
|
$cpu = sct_aix($cpu);
|
||||||
} elsif ($^O eq 'hpux') {
|
} elsif ($^O eq 'hpux') {
|
||||||
$cpu = sct_hpux();
|
$cpu = sct_hpux($cpu);
|
||||||
} elsif ($^O eq 'nto') {
|
} elsif ($^O eq 'nto') {
|
||||||
$cpu = sct_qnx();
|
$cpu = sct_qnx($cpu);
|
||||||
} elsif ($^O eq 'svr5') {
|
} elsif ($^O eq 'svr5') {
|
||||||
$cpu = sct_openserver();
|
$cpu = sct_openserver($cpu);
|
||||||
} elsif ($^O eq 'irix') {
|
} elsif ($^O eq 'irix') {
|
||||||
$cpu = sct_irix();
|
$cpu = sct_irix($cpu);
|
||||||
} elsif ($^O eq 'dec_osf') {
|
} elsif ($^O eq 'dec_osf') {
|
||||||
$cpu = sct_tru64();
|
$cpu = sct_tru64($cpu);
|
||||||
} else {
|
} else {
|
||||||
# Try all methods until we find something that works
|
# Try all methods until we find something that works
|
||||||
$cpu = (sct_gnu_linux()
|
$cpu = (sct_gnu_linux($cpu)
|
||||||
|| sct_android()
|
|| sct_android($cpu)
|
||||||
|| sct_freebsd()
|
|| sct_freebsd($cpu)
|
||||||
|| sct_netbsd()
|
|| sct_netbsd($cpu)
|
||||||
|| sct_openbsd()
|
|| sct_openbsd($cpu)
|
||||||
|| sct_hurd()
|
|| sct_hurd($cpu)
|
||||||
|| sct_darwin()
|
|| sct_darwin($cpu)
|
||||||
|| sct_solaris()
|
|| sct_solaris($cpu)
|
||||||
|| sct_aix()
|
|| sct_aix($cpu)
|
||||||
|| sct_hpux()
|
|| sct_hpux($cpu)
|
||||||
|| sct_qnx()
|
|| sct_qnx($cpu)
|
||||||
|| sct_openserver()
|
|| sct_openserver($cpu)
|
||||||
|| sct_irix()
|
|| sct_irix($cpu)
|
||||||
|| sct_tru64()
|
|| sct_tru64($cpu)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
if(not grep { $_ > 0 } values %$cpu) {
|
||||||
|
$cpu = undef;
|
||||||
|
}
|
||||||
|
# Write cached copy instead of /proc/cpuinfo is 17 ms faster
|
||||||
|
if($cpu and open(my $out_fh, ">", $cached_cpuspec)) {
|
||||||
|
print $out_fh (map { chomp; "$_\n" }
|
||||||
|
$cpu->{'sockets'},
|
||||||
|
$cpu->{'cores'},
|
||||||
|
$cpu->{'threads'});
|
||||||
|
close $out_fh;
|
||||||
|
}
|
||||||
if(not $cpu) {
|
if(not $cpu) {
|
||||||
my $nproc = nproc();
|
my $nproc = nproc();
|
||||||
if($nproc) {
|
if($nproc) {
|
||||||
|
@ -7035,7 +7057,13 @@ sub socket_core_thread() {
|
||||||
$cpu->{'active'} =
|
$cpu->{'active'} =
|
||||||
1
|
1
|
||||||
}
|
}
|
||||||
|
$cpu->{'sockets'} ||= 1;
|
||||||
|
$cpu->{'threads'} ||= $cpu->{'cores'};
|
||||||
|
$cpu->{'active'} ||= $cpu->{'threads'};
|
||||||
|
chomp($cpu->{'sockets'},
|
||||||
|
$cpu->{'cores'},
|
||||||
|
$cpu->{'threads'},
|
||||||
|
$cpu->{'active'});
|
||||||
# Choose minimum of active and actual
|
# Choose minimum of active and actual
|
||||||
my $mincpu;
|
my $mincpu;
|
||||||
$mincpu->{'sockets'} = ::min($cpu->{'sockets'},$cpu->{'active'});
|
$mincpu->{'sockets'} = ::min($cpu->{'sockets'},$cpu->{'active'});
|
||||||
|
@ -7044,33 +7072,35 @@ sub socket_core_thread() {
|
||||||
return $mincpu;
|
return $mincpu;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub sct_gnu_linux() {
|
sub sct_gnu_linux($) {
|
||||||
# Returns:
|
# Returns:
|
||||||
# { 'sockets' => #sockets
|
# { 'sockets' => #sockets
|
||||||
# 'cores' => #cores
|
# 'cores' => #cores
|
||||||
# 'threads' => #threads
|
# 'threads' => #threads
|
||||||
# 'active' => #taskset_threads }
|
# 'active' => #taskset_threads }
|
||||||
my $cpu;
|
my $cpu = shift;
|
||||||
local $/ = "\n"; # If delimiter is set, then $/ will be wrong
|
local $/ = "\n"; # If delimiter is set, then $/ will be wrong
|
||||||
if($ENV{'PARALLEL_CPUINFO'} or -e "/proc/cpuinfo") {
|
my @cpuinfo;
|
||||||
|
if($ENV{'PARALLEL_CPUINFO'}) {
|
||||||
|
# Use CPUINFO from environment - used for testing only
|
||||||
|
@cpuinfo = split/(?<=\n)/,$ENV{'PARALLEL_CPUINFO'};
|
||||||
|
} elsif($cpu->{'sockets'} and $cpu->{'cores'} and
|
||||||
|
$cpu->{'threads'}) {
|
||||||
|
# Skip /proc/cpuinfo - already set
|
||||||
|
} elsif(open(my $in_fh, "<", "/proc/cpuinfo")) {
|
||||||
|
# Read /proc/cpuinfo
|
||||||
|
@cpuinfo = <$in_fh>;
|
||||||
|
}
|
||||||
|
if(@cpuinfo) {
|
||||||
$cpu->{'sockets'} = 0;
|
$cpu->{'sockets'} = 0;
|
||||||
$cpu->{'cores'} = 0;
|
$cpu->{'cores'} = 0;
|
||||||
$cpu->{'threads'} = 0;
|
$cpu->{'threads'} = 0;
|
||||||
my %seen;
|
my %seen;
|
||||||
my %phy_seen;
|
my %phy_seen;
|
||||||
my @cpuinfo;
|
|
||||||
my $physicalid;
|
my $physicalid;
|
||||||
if(open(my $in_fh, "<", "/proc/cpuinfo")) {
|
|
||||||
@cpuinfo = <$in_fh>;
|
|
||||||
close $in_fh;
|
|
||||||
}
|
|
||||||
if($ENV{'PARALLEL_CPUINFO'}) {
|
|
||||||
# Use CPUINFO from environment - used for testing only
|
|
||||||
@cpuinfo = split/(?<=\n)/,$ENV{'PARALLEL_CPUINFO'};
|
|
||||||
}
|
|
||||||
for(@cpuinfo) {
|
for(@cpuinfo) {
|
||||||
if(/^physical id.*[:](.*)/) {
|
if(/^physical id.*[:](.*)/) {
|
||||||
$physicalid=$1;
|
$physicalid = $1;
|
||||||
if(not $phy_seen{$1}++) {
|
if(not $phy_seen{$1}++) {
|
||||||
$cpu->{'sockets'}++;
|
$cpu->{'sockets'}++;
|
||||||
}
|
}
|
||||||
|
@ -7080,8 +7110,7 @@ sub sct_gnu_linux() {
|
||||||
}
|
}
|
||||||
/^processor.*[:]/i and $cpu->{'threads'}++;
|
/^processor.*[:]/i and $cpu->{'threads'}++;
|
||||||
}
|
}
|
||||||
$cpu->{'sockets'} ||= 1;
|
$cpu->{'cores'} ||= $cpu->{'threads'} || $cpu->{'sockets'};
|
||||||
$cpu->{'cores'} ||= $cpu->{'threads'};
|
|
||||||
}
|
}
|
||||||
if(-e "/proc/self/status" and not $ENV{'PARALLEL_CPUINFO'}) {
|
if(-e "/proc/self/status" and not $ENV{'PARALLEL_CPUINFO'}) {
|
||||||
# if 'taskset' is used to limit number of threads
|
# if 'taskset' is used to limit number of threads
|
||||||
|
@ -7096,326 +7125,231 @@ sub sct_gnu_linux() {
|
||||||
close $in_fh;
|
close $in_fh;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(grep { /\d/ } values %$cpu) {
|
return $cpu;
|
||||||
return $cpu;
|
|
||||||
} else {
|
|
||||||
return undef;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub sct_android() {
|
sub sct_android($) {
|
||||||
# Returns:
|
# Returns:
|
||||||
# { 'sockets' => #sockets
|
# { 'sockets' => #sockets
|
||||||
# 'cores' => #cores
|
# 'cores' => #cores
|
||||||
# 'threads' => #threads
|
# 'threads' => #threads
|
||||||
# 'active' => #taskset_threads }
|
# 'active' => #taskset_threads }
|
||||||
# Use GNU/Linux
|
# Use GNU/Linux
|
||||||
return sct_gnu_linux();
|
return sct_gnu_linux(@_);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub sct_freebsd() {
|
sub sct_freebsd($) {
|
||||||
# Returns:
|
# Returns:
|
||||||
# { 'sockets' => #sockets
|
# { 'sockets' => #sockets
|
||||||
# 'cores' => #cores
|
# 'cores' => #cores
|
||||||
# 'threads' => #threads
|
# 'threads' => #threads
|
||||||
# 'active' => #taskset_threads }
|
# 'active' => #taskset_threads }
|
||||||
local $/ = "\n";
|
local $/ = "\n";
|
||||||
my $cpu;
|
my $cpu = shift;
|
||||||
$cpu->{'cores'} = (::qqx(qq{ sysctl -a dev.cpu | grep \%parent | awk '{ print \$2 }' | uniq | wc -l | awk '{ print \$1 }' })
|
$cpu->{'cores'} ||=
|
||||||
|
(::qqx(qq{ sysctl -a dev.cpu | grep \%parent | awk '{ print \$2 }' | uniq | wc -l | awk '{ print \$1 }' })
|
||||||
or
|
or
|
||||||
::qqx(qq{ sysctl hw.ncpu | awk '{ print \$2 }' }));
|
::qqx(qq{ sysctl hw.ncpu | awk '{ print \$2 }' }));
|
||||||
$cpu->{'cores'} and chomp $cpu->{'cores'};
|
$cpu->{'threads'} ||=
|
||||||
$cpu->{'threads'} =
|
|
||||||
(::qqx(qq{ sysctl hw.ncpu | awk '{ print \$2 }' })
|
(::qqx(qq{ sysctl hw.ncpu | awk '{ print \$2 }' })
|
||||||
or
|
or
|
||||||
::qqx(qq{ sysctl -a dev.cpu | grep \%parent | awk '{ print \$2 }' | uniq | wc -l | awk '{ print \$1 }' }));
|
::qqx(qq{ sysctl -a dev.cpu | grep \%parent | awk '{ print \$2 }' | uniq | wc -l | awk '{ print \$1 }' }));
|
||||||
$cpu->{'threads'} and chomp $cpu->{'threads'};
|
return $cpu;
|
||||||
$cpu->{'sockets'} ||= $cpu->{'cores'};
|
|
||||||
|
|
||||||
if(grep { /\d/ } values %$cpu) {
|
|
||||||
return $cpu;
|
|
||||||
} else {
|
|
||||||
return undef;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub sct_netbsd() {
|
sub sct_netbsd($) {
|
||||||
# Returns:
|
# Returns:
|
||||||
# { 'sockets' => #sockets
|
# { 'sockets' => #sockets
|
||||||
# 'cores' => #cores
|
# 'cores' => #cores
|
||||||
# 'threads' => #threads
|
# 'threads' => #threads
|
||||||
# 'active' => #taskset_threads }
|
# 'active' => #taskset_threads }
|
||||||
local $/ = "\n";
|
local $/ = "\n";
|
||||||
my $cpu;
|
my $cpu = shift;
|
||||||
$cpu->{'cores'} = ::qqx("sysctl -n hw.ncpu");
|
$cpu->{'cores'} ||= ::qqx("sysctl -n hw.ncpu");
|
||||||
$cpu->{'cores'} and chomp $cpu->{'cores'};
|
return $cpu;
|
||||||
$cpu->{'threads'} = ::qqx("sysctl -n hw.ncpu");
|
|
||||||
$cpu->{'threads'} and chomp $cpu->{'threads'};
|
|
||||||
$cpu->{'sockets'} ||= $cpu->{'cores'};
|
|
||||||
|
|
||||||
if(grep { /\d/ } values %$cpu) {
|
|
||||||
return $cpu;
|
|
||||||
} else {
|
|
||||||
return undef;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub sct_openbsd() {
|
sub sct_openbsd($) {
|
||||||
# Returns:
|
# Returns:
|
||||||
# { 'sockets' => #sockets
|
# { 'sockets' => #sockets
|
||||||
# 'cores' => #cores
|
# 'cores' => #cores
|
||||||
# 'threads' => #threads
|
# 'threads' => #threads
|
||||||
# 'active' => #taskset_threads }
|
# 'active' => #taskset_threads }
|
||||||
local $/ = "\n";
|
local $/ = "\n";
|
||||||
my $cpu;
|
my $cpu = shift;
|
||||||
$cpu->{'cores'} = ::qqx('sysctl -n hw.ncpu');
|
$cpu->{'cores'} ||= ::qqx('sysctl -n hw.ncpu');
|
||||||
$cpu->{'cores'} and chomp $cpu->{'cores'};
|
return $cpu;
|
||||||
$cpu->{'threads'} = ::qqx('sysctl -n hw.ncpu');
|
|
||||||
$cpu->{'threads'} and chomp $cpu->{'threads'};
|
|
||||||
$cpu->{'sockets'} ||= $cpu->{'cores'};
|
|
||||||
|
|
||||||
if(grep { /\d/ } values %$cpu) {
|
|
||||||
return $cpu;
|
|
||||||
} else {
|
|
||||||
return undef;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub sct_hurd() {
|
sub sct_hurd($) {
|
||||||
# Returns:
|
# Returns:
|
||||||
# { 'sockets' => #sockets
|
# { 'sockets' => #sockets
|
||||||
# 'cores' => #cores
|
# 'cores' => #cores
|
||||||
# 'threads' => #threads
|
# 'threads' => #threads
|
||||||
# 'active' => #taskset_threads }
|
# 'active' => #taskset_threads }
|
||||||
local $/ = "\n";
|
local $/ = "\n";
|
||||||
my $cpu;
|
my $cpu = shift;
|
||||||
$cpu->{'cores'} = ::qqx("nproc");
|
$cpu->{'cores'} ||= ::qqx("nproc");
|
||||||
$cpu->{'cores'} and chomp $cpu->{'cores'};
|
return $cpu;
|
||||||
$cpu->{'threads'} = ::qqx("nproc");
|
|
||||||
$cpu->{'threads'} and chomp $cpu->{'threads'};
|
|
||||||
|
|
||||||
if(grep { /\d/ } values %$cpu) {
|
|
||||||
return $cpu;
|
|
||||||
} else {
|
|
||||||
return undef;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub sct_darwin() {
|
sub sct_darwin($) {
|
||||||
# Returns:
|
# Returns:
|
||||||
# { 'sockets' => #sockets
|
# { 'sockets' => #sockets
|
||||||
# 'cores' => #cores
|
# 'cores' => #cores
|
||||||
# 'threads' => #threads
|
# 'threads' => #threads
|
||||||
# 'active' => #taskset_threads }
|
# 'active' => #taskset_threads }
|
||||||
local $/ = "\n";
|
local $/ = "\n";
|
||||||
my $cpu;
|
my $cpu = shift;
|
||||||
$cpu->{'cores'} =
|
$cpu->{'cores'} ||=
|
||||||
(::qqx('sysctl -n hw.physicalcpu')
|
(::qqx('sysctl -n hw.physicalcpu')
|
||||||
or
|
or
|
||||||
::qqx(qq{ sysctl -a hw | grep [^a-z]physicalcpu[^a-z] | awk '{ print \$2 }' }));
|
::qqx(qq{ sysctl -a hw | grep [^a-z]physicalcpu[^a-z] | awk '{ print \$2 }' }));
|
||||||
$cpu->{'cores'} and chomp $cpu->{'cores'};
|
$cpu->{'threads'} ||=
|
||||||
$cpu->{'threads'} =
|
|
||||||
(::qqx('sysctl -n hw.logicalcpu')
|
(::qqx('sysctl -n hw.logicalcpu')
|
||||||
or
|
or
|
||||||
::qqx(qq{ sysctl -a hw | grep [^a-z]logicalcpu[^a-z] | awk '{ print \$2 }' }));
|
::qqx(qq{ sysctl -a hw | grep [^a-z]logicalcpu[^a-z] | awk '{ print \$2 }' }));
|
||||||
$cpu->{'threads'} and chomp $cpu->{'threads'};
|
return $cpu;
|
||||||
$cpu->{'sockets'} ||= $cpu->{'cores'};
|
|
||||||
|
|
||||||
if(grep { /\d/ } values %$cpu) {
|
|
||||||
return $cpu;
|
|
||||||
} else {
|
|
||||||
return undef;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub sct_solaris() {
|
sub sct_solaris($) {
|
||||||
# Returns:
|
# Returns:
|
||||||
# { 'sockets' => #sockets
|
# { 'sockets' => #sockets
|
||||||
# 'cores' => #cores
|
# 'cores' => #cores
|
||||||
# 'threads' => #threads
|
# 'threads' => #threads
|
||||||
# 'active' => #taskset_threads }
|
# 'active' => #taskset_threads }
|
||||||
local $/ = "\n";
|
local $/ = "\n";
|
||||||
my $cpu;
|
my $cpu = shift;
|
||||||
if(-x "/usr/sbin/psrinfo") {
|
if(not $cpu->{'cores'}) {
|
||||||
my @psrinfo = ::qqx("/usr/sbin/psrinfo");
|
if(-x "/usr/bin/kstat") {
|
||||||
if($#psrinfo >= 0) {
|
my @chip_id = ::qqx("/usr/bin/kstat cpu_info|grep chip_id");
|
||||||
$cpu->{'cores'} = $#psrinfo +1;
|
if($#chip_id >= 0) {
|
||||||
}
|
$cpu->{'sockets'} ||= $#chip_id +1;
|
||||||
}
|
}
|
||||||
if(-x "/usr/sbin/prtconf") {
|
my @core_id = ::qqx("/usr/bin/kstat -m cpu_info|grep -w core_id|uniq");
|
||||||
my @prtconf = ::qqx("/usr/sbin/prtconf | grep cpu..instance");
|
if($#core_id >= 0) {
|
||||||
if($#prtconf >= 0) {
|
$cpu->{'cores'} ||= $#core_id +1;
|
||||||
$cpu->{'cores'} = $#prtconf +1;
|
}
|
||||||
}
|
}
|
||||||
}
|
if(-x "/usr/sbin/psrinfo") {
|
||||||
if(-x "/usr/sbin/prtconf") {
|
my @psrinfo = ::qqx("/usr/sbin/psrinfo -p");
|
||||||
my @prtconf = ::qqx("/usr/sbin/prtconf | grep cpu..instance");
|
if($#psrinfo >= 0) {
|
||||||
if($#prtconf >= 0) {
|
$cpu->{'sockets'} ||= $psrinfo[0];
|
||||||
$cpu->{'cores'} = $#prtconf +1;
|
}
|
||||||
}
|
}
|
||||||
}
|
if(-x "/usr/sbin/prtconf") {
|
||||||
$cpu->{'cores'} and chomp $cpu->{'cores'};
|
my @prtconf = ::qqx("/usr/sbin/prtconf | grep cpu..instance");
|
||||||
|
if($#prtconf >= 0) {
|
||||||
if(-x "/usr/sbin/psrinfo") {
|
$cpu->{'cores'} ||= $#prtconf +1;
|
||||||
my @psrinfo = ::qqx("/usr/sbin/psrinfo");
|
|
||||||
if($#psrinfo >= 0) {
|
|
||||||
$cpu->{'threads'} = $#psrinfo +1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(-x "/usr/sbin/prtconf") {
|
|
||||||
my @prtconf = ::qqx("/usr/sbin/prtconf | grep cpu..instance");
|
|
||||||
if($#prtconf >= 0) {
|
|
||||||
$cpu->{'threads'} = $#prtconf +1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$cpu->{'threads'} and chomp $cpu->{'threads'};
|
|
||||||
|
|
||||||
if(grep { /\d/ } values %$cpu) {
|
|
||||||
return $cpu;
|
|
||||||
} else {
|
|
||||||
return undef;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub sct_aix() {
|
|
||||||
# Returns:
|
|
||||||
# { 'sockets' => #sockets
|
|
||||||
# 'cores' => #cores
|
|
||||||
# 'threads' => #threads
|
|
||||||
# 'active' => #taskset_threads }
|
|
||||||
local $/ = "\n";
|
|
||||||
my $cpu;
|
|
||||||
if(-x "/usr/sbin/lscfg") {
|
|
||||||
if(open(my $in_fh, "-|", "/usr/sbin/lscfg -vs |grep proc | wc -l|tr -d ' '")) {
|
|
||||||
$cpu->{'cores'} = <$in_fh>;
|
|
||||||
chomp ($cpu->{'cores'});
|
|
||||||
close $in_fh;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(-x "/usr/bin/vmstat") {
|
|
||||||
if(open(my $in_fh, "-|", "/usr/bin/vmstat 1 1")) {
|
|
||||||
while(<$in_fh>) {
|
|
||||||
/lcpu=([0-9]*) / and $cpu->{'threads'} = $1;
|
|
||||||
}
|
}
|
||||||
close $in_fh;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return $cpu;
|
||||||
if(grep { /\d/ } values %$cpu) {
|
|
||||||
# BUG It is not not known how to calculate this
|
|
||||||
$cpu->{'sockets'} = 1;
|
|
||||||
return $cpu;
|
|
||||||
} else {
|
|
||||||
return undef;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub sct_hpux() {
|
sub sct_aix($) {
|
||||||
# Returns:
|
# Returns:
|
||||||
# { 'sockets' => #sockets
|
# { 'sockets' => #sockets
|
||||||
# 'cores' => #cores
|
# 'cores' => #cores
|
||||||
# 'threads' => #threads
|
# 'threads' => #threads
|
||||||
# 'active' => #taskset_threads }
|
# 'active' => #taskset_threads }
|
||||||
local $/ = "\n";
|
local $/ = "\n";
|
||||||
my $cpu;
|
my $cpu = shift;
|
||||||
$cpu->{'cores'} =
|
if(not $cpu->{'cores'}) {
|
||||||
|
if(-x "/usr/sbin/lscfg") {
|
||||||
|
if(open(my $in_fh, "-|", "/usr/sbin/lscfg -vs |grep proc | wc -l|tr -d ' '")) {
|
||||||
|
$cpu->{'cores'} = <$in_fh>;
|
||||||
|
close $in_fh;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(not $cpu->{'threads'}) {
|
||||||
|
if(-x "/usr/bin/vmstat") {
|
||||||
|
if(open(my $in_fh, "-|", "/usr/bin/vmstat 1 1")) {
|
||||||
|
while(<$in_fh>) {
|
||||||
|
/lcpu=([0-9]*) / and $cpu->{'threads'} = $1;
|
||||||
|
}
|
||||||
|
close $in_fh;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $cpu;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub sct_hpux($) {
|
||||||
|
# Returns:
|
||||||
|
# { 'sockets' => #sockets
|
||||||
|
# 'cores' => #cores
|
||||||
|
# 'threads' => #threads
|
||||||
|
# 'active' => #taskset_threads }
|
||||||
|
local $/ = "\n";
|
||||||
|
my $cpu = shift;
|
||||||
|
$cpu->{'cores'} ||=
|
||||||
::qqx(qq{ /usr/bin/mpsched -s 2>&1 | grep 'Locality Domain Count' | awk '{ print \$4 }'});
|
::qqx(qq{ /usr/bin/mpsched -s 2>&1 | grep 'Locality Domain Count' | awk '{ print \$4 }'});
|
||||||
chomp($cpu->{'cores'});
|
$cpu->{'threads'} ||=
|
||||||
$cpu->{'threads'} =
|
|
||||||
::qqx(qq{ /usr/bin/mpsched -s 2>&1 | perl -ne '/Processor Count\\D+(\\d+)/ and print "\$1"'});
|
::qqx(qq{ /usr/bin/mpsched -s 2>&1 | perl -ne '/Processor Count\\D+(\\d+)/ and print "\$1"'});
|
||||||
|
return $cpu;
|
||||||
if(grep { /\d/ } values %$cpu) {
|
|
||||||
# BUG It is not not known how to calculate this
|
|
||||||
$cpu->{'sockets'} = 1;
|
|
||||||
return $cpu;
|
|
||||||
} else {
|
|
||||||
return undef;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub sct_qnx() {
|
sub sct_qnx($) {
|
||||||
# Returns:
|
# Returns:
|
||||||
# { 'sockets' => #sockets
|
# { 'sockets' => #sockets
|
||||||
# 'cores' => #cores
|
# 'cores' => #cores
|
||||||
# 'threads' => #threads
|
# 'threads' => #threads
|
||||||
# 'active' => #taskset_threads }
|
# 'active' => #taskset_threads }
|
||||||
local $/ = "\n";
|
local $/ = "\n";
|
||||||
my $cpu;
|
my $cpu = shift;
|
||||||
# BUG: It is not known how to calculate this.
|
# BUG: It is not known how to calculate this.
|
||||||
|
|
||||||
if(grep { /\d/ } values %$cpu) {
|
return $cpu;
|
||||||
return $cpu;
|
|
||||||
} else {
|
|
||||||
return undef;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub sct_openserver() {
|
sub sct_openserver($) {
|
||||||
# Returns:
|
# Returns:
|
||||||
# { 'sockets' => #sockets
|
# { 'sockets' => #sockets
|
||||||
# 'cores' => #cores
|
# 'cores' => #cores
|
||||||
# 'threads' => #threads
|
# 'threads' => #threads
|
||||||
# 'active' => #taskset_threads }
|
# 'active' => #taskset_threads }
|
||||||
local $/ = "\n";
|
local $/ = "\n";
|
||||||
my $cpu;
|
my $cpu = shift;
|
||||||
if(-x "/usr/sbin/psrinfo") {
|
if(not $cpu->{'cores'}) {
|
||||||
my @psrinfo = ::qqx("/usr/sbin/psrinfo");
|
if(-x "/usr/sbin/psrinfo") {
|
||||||
if($#psrinfo >= 0) {
|
my @psrinfo = ::qqx("/usr/sbin/psrinfo");
|
||||||
$cpu->{'cores'} = $#psrinfo +1;
|
if($#psrinfo >= 0) {
|
||||||
}
|
$cpu->{'cores'} = $#psrinfo +1;
|
||||||
}
|
}
|
||||||
if(-x "/usr/sbin/psrinfo") {
|
}
|
||||||
my @psrinfo = ::qqx("/usr/sbin/psrinfo");
|
|
||||||
if($#psrinfo >= 0) {
|
|
||||||
$cpu->{'threads'} = $#psrinfo +1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
$cpu->{'sockets'} ||= $cpu->{'cores'};
|
$cpu->{'sockets'} ||= $cpu->{'cores'};
|
||||||
|
return $cpu;
|
||||||
if(grep { /\d/ } values %$cpu) {
|
|
||||||
return $cpu;
|
|
||||||
} else {
|
|
||||||
return undef;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub sct_irix() {
|
sub sct_irix($) {
|
||||||
# Returns:
|
# Returns:
|
||||||
# { 'sockets' => #sockets
|
# { 'sockets' => #sockets
|
||||||
# 'cores' => #cores
|
# 'cores' => #cores
|
||||||
# 'threads' => #threads
|
# 'threads' => #threads
|
||||||
# 'active' => #taskset_threads }
|
# 'active' => #taskset_threads }
|
||||||
local $/ = "\n";
|
local $/ = "\n";
|
||||||
my $cpu;
|
my $cpu = shift;
|
||||||
$cpu->{'cores'} = ::qqx(qq{ hinv | grep HZ | grep Processor | awk '{print \$1}' });
|
$cpu->{'cores'} ||=
|
||||||
$cpu->{'cores'} and chomp $cpu->{'cores'};
|
::qqx(qq{ hinv | grep HZ | grep Processor | awk '{print \$1}' });
|
||||||
|
return $cpu;
|
||||||
if(grep { /\d/ } values %$cpu) {
|
|
||||||
return $cpu;
|
|
||||||
} else {
|
|
||||||
return undef;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub sct_tru64() {
|
sub sct_tru64($) {
|
||||||
# Returns:
|
# Returns:
|
||||||
# { 'sockets' => #sockets
|
# { 'sockets' => #sockets
|
||||||
# 'cores' => #cores
|
# 'cores' => #cores
|
||||||
# 'threads' => #threads
|
# 'threads' => #threads
|
||||||
# 'active' => #taskset_threads }
|
# 'active' => #taskset_threads }
|
||||||
local $/ = "\n";
|
local $/ = "\n";
|
||||||
my $cpu;
|
my $cpu = shift;
|
||||||
$cpu->{'cores'} = ::qqx("sizer -pr");
|
$cpu->{'cores'} ||= ::qqx("sizer -pr");
|
||||||
$cpu->{'cores'} and chomp $cpu->{'cores'};
|
|
||||||
$cpu->{'cores'} ||= 1;
|
|
||||||
$cpu->{'sockets'} ||= $cpu->{'cores'};
|
$cpu->{'sockets'} ||= $cpu->{'cores'};
|
||||||
$cpu->{'threads'} ||= $cpu->{'cores'};
|
$cpu->{'threads'} ||= $cpu->{'cores'};
|
||||||
|
|
||||||
if(grep { /\d/ } values %$cpu) {
|
return $cpu;
|
||||||
return $cpu;
|
|
||||||
} else {
|
|
||||||
return undef;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub sshcommand($) {
|
sub sshcommand($) {
|
||||||
|
@ -9221,7 +9155,8 @@ sub start($) {
|
||||||
return $pid;
|
return $pid;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub open3_setpgrp {
|
sub redefine_open3_setpgrp {
|
||||||
|
my $setgprp_cache = shift;
|
||||||
# Select and run open3_setpgrp_internal/open3_setpgrp_external
|
# Select and run open3_setpgrp_internal/open3_setpgrp_external
|
||||||
no warnings 'redefine';
|
no warnings 'redefine';
|
||||||
my ($outfh,$name) = ::tmpfile(SUFFIX => ".tst");
|
my ($outfh,$name) = ::tmpfile(SUFFIX => ".tst");
|
||||||
|
@ -9235,6 +9170,7 @@ sub start($) {
|
||||||
"perl -MIPC::Open3 -e ".
|
"perl -MIPC::Open3 -e ".
|
||||||
::shell_quote_scalar_default($script)
|
::shell_quote_scalar_default($script)
|
||||||
);
|
);
|
||||||
|
my $redefine_eval;
|
||||||
# Redirect STDERR temporarily,
|
# Redirect STDERR temporarily,
|
||||||
# so errors on MacOS X are ignored.
|
# so errors on MacOS X are ignored.
|
||||||
open my $saveerr, ">&STDERR";
|
open my $saveerr, ">&STDERR";
|
||||||
|
@ -9249,14 +9185,30 @@ sub start($) {
|
||||||
# or does not have bash:
|
# or does not have bash:
|
||||||
# Use (slow) external version
|
# Use (slow) external version
|
||||||
unlink($name);
|
unlink($name);
|
||||||
*open3_setpgrp = \&open3_setpgrp_external;
|
$redefine_eval = '*open3_setpgrp = \&open3_setpgrp_external';
|
||||||
::debug("init","open3_setpgrp_external chosen\n");
|
::debug("init","open3_setpgrp_external chosen\n");
|
||||||
} else {
|
} else {
|
||||||
# Supports open3(x,x,x,"-")
|
# Supports open3(x,x,x,"-")
|
||||||
# This is 0.5 ms faster to run
|
# This is 0.5 ms faster to run
|
||||||
*open3_setpgrp = \&open3_setpgrp_internal;
|
$redefine_eval = '*open3_setpgrp = \&open3_setpgrp_internal';
|
||||||
::debug("init","open3_setpgrp_internal chosen\n");
|
::debug("init","open3_setpgrp_internal chosen\n");
|
||||||
}
|
}
|
||||||
|
open(my $fh, ">", $setgprp_cache) || die;
|
||||||
|
print $fh $redefine_eval;
|
||||||
|
close $fh;
|
||||||
|
eval $redefine_eval;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub open3_setpgrp {
|
||||||
|
my $setgprp_cache = $Global::cache_dir . "/tmp/sshlogin/" .
|
||||||
|
::hostname() . "/setpgrp_func";
|
||||||
|
if(-e $setgprp_cache) {
|
||||||
|
open(my $fh, "<", $setgprp_cache) || die;
|
||||||
|
eval <$fh> || die;
|
||||||
|
close $fh;
|
||||||
|
} else {
|
||||||
|
redefine_open3_setpgrp($setgprp_cache);
|
||||||
|
}
|
||||||
# The sub is now redefined. Call it
|
# The sub is now redefined. Call it
|
||||||
return open3_setpgrp(@_);
|
return open3_setpgrp(@_);
|
||||||
}
|
}
|
||||||
|
|
|
@ -277,9 +277,9 @@ shell quote a string
|
||||||
|
|
||||||
perl quote a string
|
perl quote a string
|
||||||
|
|
||||||
=item Z<> B<uq()>
|
=item Z<> B<uq()> (or B<uq>)
|
||||||
|
|
||||||
unquote current replacement string
|
do not quote current replacement string
|
||||||
|
|
||||||
=item Z<> B<total_jobs()>
|
=item Z<> B<total_jobs()>
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ P_ALL="openstep qnx pidora alpha tru64 hpux-ia64 syllable raspbian solaris openi
|
||||||
# Skip irix until Perl is upgraded (I cannot due to too small disk quota)
|
# Skip irix until Perl is upgraded (I cannot due to too small disk quota)
|
||||||
P_ALL="openstep qnx pidora alpha tru64 hpux-ia64 syllable raspbian solaris openindiana aix hpux debian-ppc suse solaris-x86 mandriva ubuntu scosysv unixware centos miros macosx redhat netbsd openbsd freebsd debian dragonfly vax minix hurd beaglebone cubieboard2"
|
P_ALL="openstep qnx pidora alpha tru64 hpux-ia64 syllable raspbian solaris openindiana aix hpux debian-ppc suse solaris-x86 mandriva ubuntu scosysv unixware centos miros macosx redhat netbsd openbsd freebsd debian dragonfly vax minix hurd beaglebone cubieboard2"
|
||||||
P="$P_ALL"
|
P="$P_ALL"
|
||||||
|
#P="unixware freebsd netbsd"
|
||||||
|
|
||||||
# tru64 takes 22s to run 4 parallels
|
# tru64 takes 22s to run 4 parallels
|
||||||
MAXTIME=50
|
MAXTIME=50
|
||||||
|
@ -20,13 +21,14 @@ MAXINNERPROC=${maxinnerproc:-3}
|
||||||
|
|
||||||
export PARALLEL_SSH="ssh -oLogLevel=quiet"
|
export PARALLEL_SSH="ssh -oLogLevel=quiet"
|
||||||
|
|
||||||
# select a running master (debian-ppc, suse, ubuntu, or debian)
|
# select a running master (debian-ppc, suse, ubuntu, redhat, or debian)
|
||||||
|
# 2019-06-25 debian has too little free memory (and swap)
|
||||||
MASTER=$(parallel -j0 --delay 0.1 --halt now,success=1 $PARALLEL_SSH {} echo {} \
|
MASTER=$(parallel -j0 --delay 0.1 --halt now,success=1 $PARALLEL_SSH {} echo {} \
|
||||||
::: {debian-ppc,ubuntu,debian,suse}.polarhome.com)
|
::: {debian-ppc,ubuntu,suse,redhat}.polarhome.com)
|
||||||
|
|
||||||
parallel -j0 --delay 0.1 --retries $RETRIES \
|
parallel -j0 --delay 0.1 --retries $RETRIES \
|
||||||
rsync -L /usr/local/bin/{parallel,env_parallel,env_parallel.*[^~],parcat,stdout} \
|
rsync -L /usr/local/bin/{parallel,env_parallel,env_parallel.*[^~],parcat,stdout} \
|
||||||
::: $MASTER:bin/
|
::: $MASTER:bin/
|
||||||
|
|
||||||
doit() {
|
doit() {
|
||||||
# Avoid the stupid /etc/issue.net banner at Polarhome: -oLogLevel=quiet
|
# Avoid the stupid /etc/issue.net banner at Polarhome: -oLogLevel=quiet
|
||||||
|
@ -35,7 +37,7 @@ doit() {
|
||||||
export MAXTIME
|
export MAXTIME
|
||||||
export RETRIES
|
export RETRIES
|
||||||
export MAXPROC
|
export MAXPROC
|
||||||
export RET_TIME_K="--memfree 150m -k --retries $RETRIES --timeout $MAXTIME"
|
export RET_TIME_K="--memfree 100m -k --retries $RETRIES --timeout $MAXTIME"
|
||||||
LC_ALL=C
|
LC_ALL=C
|
||||||
|
|
||||||
MAXPROC=$(echo $(seq 300 | parallel -j0 echo {%} | sort -n | tail -n1) /$MAXINNERPROC | bc)
|
MAXPROC=$(echo $(seq 300 | parallel -j0 echo {%} | sort -n | tail -n1) /$MAXINNERPROC | bc)
|
||||||
|
@ -44,8 +46,8 @@ doit() {
|
||||||
echo '### Filter out working servers'
|
echo '### Filter out working servers'
|
||||||
# syllable often gives false positive
|
# syllable often gives false positive
|
||||||
parallel --timeout $MAXTIME -j10 ssh syllable true ::: {1..10} 2>/dev/null >/dev/null &
|
parallel --timeout $MAXTIME -j10 ssh syllable true ::: {1..10} 2>/dev/null >/dev/null &
|
||||||
POLAR_ALL="`bin/parallel --memfree 200m -j0 -k --timeout 10 echo {} ::: $P`"
|
POLAR_ALL="`bin/parallel --memfree 100m -j0 -k --timeout 10 echo {} ::: $P`"
|
||||||
POLAR="`bin/parallel --memfree 200m -j0 -k --timeout 10 $PARALLEL_SSH {} echo {} ::: $P`"
|
POLAR="`bin/parallel --memfree 100m -j0 -k --timeout 10 $PARALLEL_SSH {} echo {} ::: $P`"
|
||||||
diff <(echo "$POLAR_ALL") <(echo "$POLAR")
|
diff <(echo "$POLAR_ALL") <(echo "$POLAR")
|
||||||
S_POLAR=`bin/parallel -j0 $RET_TIME_K echo -S 1/{} ::: $POLAR`
|
S_POLAR=`bin/parallel -j0 $RET_TIME_K echo -S 1/{} ::: $POLAR`
|
||||||
|
|
||||||
|
@ -77,7 +79,7 @@ doit() {
|
||||||
par_nonall() {
|
par_nonall() {
|
||||||
parallel -j$MAXPROC $RET_TIME_K --delay 0.1 --tag \
|
parallel -j$MAXPROC $RET_TIME_K --delay 0.1 --tag \
|
||||||
--nonall $S_POLAR -S "1/sshwithpass minix" --argsep ,:- \
|
--nonall $S_POLAR -S "1/sshwithpass minix" --argsep ,:- \
|
||||||
'source setupenv >&/dev/null || . `pwd`/setupenv;' "$@"
|
'source setupenv 2>/dev/null; . `pwd`/setupenv;' "$@"
|
||||||
# setupenv contains something like this (adapted to the local path and shell)
|
# setupenv contains something like this (adapted to the local path and shell)
|
||||||
#
|
#
|
||||||
# PATH=$HOME/bin:$PATH:/usr/local/bin
|
# PATH=$HOME/bin:$PATH:/usr/local/bin
|
||||||
|
@ -93,7 +95,7 @@ doit() {
|
||||||
::: $POLAR minix
|
::: $POLAR minix
|
||||||
echo Done copying
|
echo Done copying
|
||||||
|
|
||||||
env_parallel -d '\n\n' -vkj$MAXINNERPROC --delay 2 <<'EOF'
|
env_parallel -d '\n\n' -vkj$MAXINNERPROC --delay 2 <<'EOF' |
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo '### Works on ...'
|
echo '### Works on ...'
|
||||||
|
@ -123,7 +125,7 @@ doit() {
|
||||||
cat <(echo bash only A)
|
cat <(echo bash only A)
|
||||||
}
|
}
|
||||||
export -f funcA;
|
export -f funcA;
|
||||||
bin/parallel funcA ::: 1' 2>&1 | sort
|
bin/parallel funcA ::: 1' 2>&1 | LANG=C sort
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo '### Does PARALLEL_SHELL help exporting a bash function'
|
echo '### Does PARALLEL_SHELL help exporting a bash function'
|
||||||
|
@ -142,16 +144,29 @@ doit() {
|
||||||
bin/parallel funcB ::: 1' 2>&1
|
bin/parallel funcB ::: 1' 2>&1
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo '### env_parallel echo :::: <(echo OK)'
|
echo '### env_parallel --install'
|
||||||
echo '(bash ksh mksh zsh only)'
|
echo '(bash ksh mksh zsh only)'
|
||||||
echo
|
echo
|
||||||
par_nonall 'bin/env_parallel --install && echo install-OK' 2>&1
|
par_nonall 'bin/env_parallel --install && echo install-OK' 2>&1
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo '### env_parallel echo env_parallel ::: run-OK'
|
||||||
|
echo '(bash ksh mksh zsh only)'
|
||||||
|
echo
|
||||||
par_nonall 'env_parallel echo env_parallel ::: run-OK' 2>&1
|
par_nonall 'env_parallel echo env_parallel ::: run-OK' 2>&1
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo '### env_parallel echo reading from process substitution :::: <(echo OK)'
|
||||||
|
echo '(bash ksh mksh zsh only)'
|
||||||
|
echo
|
||||||
# csh on NetBSD does not support process substitution
|
# csh on NetBSD does not support process substitution
|
||||||
par_nonall 'env_parallel echo reading from process substitution :::: <(echo OK)' 2>&1 |
|
par_nonall 'env_parallel echo reading from process substitution :::: <(echo OK)' 2>&1 |
|
||||||
grep -v ': /tmp/.*: No such file or directory'
|
grep -v ': /tmp/.*: No such file or directory'
|
||||||
|
|
||||||
# Test empty command name in process list
|
echo
|
||||||
|
echo '### Test empty command name in process list'
|
||||||
|
echo '(bash ksh mksh zsh only)'
|
||||||
|
echo
|
||||||
test_empty_cmd() {
|
test_empty_cmd() {
|
||||||
echo '### Test if empty command name in process list causes problems'
|
echo '### Test if empty command name in process list causes problems'
|
||||||
perl -e '$0=" ";sleep 1000' &
|
perl -e '$0=" ";sleep 1000' &
|
||||||
|
@ -179,7 +194,9 @@ doit() {
|
||||||
echo '### env_parset var1,var2,var3 seq ::: 2 3 4'
|
echo '### env_parset var1,var2,var3 seq ::: 2 3 4'
|
||||||
par_nonall 'start=2; env_parset var1,var2,var3 seq \$start ::: 2 3 4; echo $var1,$var2,$var3' 2>&1
|
par_nonall 'start=2; env_parset var1,var2,var3 seq \$start ::: 2 3 4; echo $var1,$var2,$var3' 2>&1
|
||||||
EOF
|
EOF
|
||||||
|
perl -ne 'm{UX:sh ./bin/sh.: ERROR: source: Not found} and next;
|
||||||
|
m{/usr/X11R7/bin/.: Permission denied.} and next;
|
||||||
|
print'
|
||||||
}
|
}
|
||||||
|
|
||||||
env_parallel -u -S$MASTER doit ::: 1
|
env_parallel -u -S$MASTER doit ::: 1
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
MAXTIME=50 RETRIES=3 MAXPROC=84 MAXINNERPROC=3
|
MAXTIME=50 RETRIES=3 MAXPROC=100 MAXINNERPROC=3
|
||||||
### Filter out working servers
|
### Filter out working servers
|
||||||
1d0
|
1d0
|
||||||
< openstep
|
< openstep
|
||||||
|
@ -17,7 +17,6 @@ MAXTIME=50 RETRIES=3 MAXPROC=84 MAXINNERPROC=3
|
||||||
bin/parallel qnx copy qnx bin/parallel parallel
|
bin/parallel qnx copy qnx bin/parallel parallel
|
||||||
bin/parallel pidora copy pidora bin/parallel parallel
|
bin/parallel pidora copy pidora bin/parallel parallel
|
||||||
bin/parallel tru64 copy tru64 bin/parallel parallel
|
bin/parallel tru64 copy tru64 bin/parallel parallel
|
||||||
bin/parallel hpux-ia64 copy hpux-ia64 bin/parallel parallel
|
|
||||||
bin/parallel raspbian copy raspbian bin/parallel parallel
|
bin/parallel raspbian copy raspbian bin/parallel parallel
|
||||||
bin/parallel solaris copy solaris bin/parallel parallel
|
bin/parallel solaris copy solaris bin/parallel parallel
|
||||||
bin/parallel openindiana copy openindiana bin/parallel parallel
|
bin/parallel openindiana copy openindiana bin/parallel parallel
|
||||||
|
@ -38,12 +37,10 @@ bin/parallel netbsd copy netbsd bin/parallel parallel
|
||||||
bin/parallel openbsd copy openbsd bin/parallel parallel
|
bin/parallel openbsd copy openbsd bin/parallel parallel
|
||||||
bin/parallel freebsd copy freebsd bin/parallel parallel
|
bin/parallel freebsd copy freebsd bin/parallel parallel
|
||||||
bin/parallel debian copy debian bin/parallel parallel
|
bin/parallel debian copy debian bin/parallel parallel
|
||||||
bin/parallel hurd copy hurd bin/parallel parallel
|
|
||||||
bin/parallel minix copy minix bin/parallel parallel
|
bin/parallel minix copy minix bin/parallel parallel
|
||||||
bin/env_parallel qnx copy qnx bin/env_parallel env_parallel
|
bin/env_parallel qnx copy qnx bin/env_parallel env_parallel
|
||||||
bin/env_parallel pidora copy pidora bin/env_parallel env_parallel
|
bin/env_parallel pidora copy pidora bin/env_parallel env_parallel
|
||||||
bin/env_parallel tru64 copy tru64 bin/env_parallel env_parallel
|
bin/env_parallel tru64 copy tru64 bin/env_parallel env_parallel
|
||||||
bin/env_parallel hpux-ia64 copy hpux-ia64 bin/env_parallel env_parallel
|
|
||||||
bin/env_parallel raspbian copy raspbian bin/env_parallel env_parallel
|
bin/env_parallel raspbian copy raspbian bin/env_parallel env_parallel
|
||||||
bin/env_parallel solaris copy solaris bin/env_parallel env_parallel
|
bin/env_parallel solaris copy solaris bin/env_parallel env_parallel
|
||||||
bin/env_parallel openindiana copy openindiana bin/env_parallel env_parallel
|
bin/env_parallel openindiana copy openindiana bin/env_parallel env_parallel
|
||||||
|
@ -64,12 +61,10 @@ bin/env_parallel netbsd copy netbsd bin/env_parallel env_parallel
|
||||||
bin/env_parallel openbsd copy openbsd bin/env_parallel env_parallel
|
bin/env_parallel openbsd copy openbsd bin/env_parallel env_parallel
|
||||||
bin/env_parallel freebsd copy freebsd bin/env_parallel env_parallel
|
bin/env_parallel freebsd copy freebsd bin/env_parallel env_parallel
|
||||||
bin/env_parallel debian copy debian bin/env_parallel env_parallel
|
bin/env_parallel debian copy debian bin/env_parallel env_parallel
|
||||||
bin/env_parallel hurd copy hurd bin/env_parallel env_parallel
|
|
||||||
bin/env_parallel minix copy minix bin/env_parallel env_parallel
|
bin/env_parallel minix copy minix bin/env_parallel env_parallel
|
||||||
bin/env_parallel.ash qnx copy qnx bin/env_parallel.ash env_parallel.ash
|
bin/env_parallel.ash qnx copy qnx bin/env_parallel.ash env_parallel.ash
|
||||||
bin/env_parallel.ash pidora copy pidora bin/env_parallel.ash env_parallel.ash
|
bin/env_parallel.ash pidora copy pidora bin/env_parallel.ash env_parallel.ash
|
||||||
bin/env_parallel.ash tru64 copy tru64 bin/env_parallel.ash env_parallel.ash
|
bin/env_parallel.ash tru64 copy tru64 bin/env_parallel.ash env_parallel.ash
|
||||||
bin/env_parallel.ash hpux-ia64 copy hpux-ia64 bin/env_parallel.ash env_parallel.ash
|
|
||||||
bin/env_parallel.ash raspbian copy raspbian bin/env_parallel.ash env_parallel.ash
|
bin/env_parallel.ash raspbian copy raspbian bin/env_parallel.ash env_parallel.ash
|
||||||
bin/env_parallel.ash solaris copy solaris bin/env_parallel.ash env_parallel.ash
|
bin/env_parallel.ash solaris copy solaris bin/env_parallel.ash env_parallel.ash
|
||||||
bin/env_parallel.ash openindiana copy openindiana bin/env_parallel.ash env_parallel.ash
|
bin/env_parallel.ash openindiana copy openindiana bin/env_parallel.ash env_parallel.ash
|
||||||
|
@ -90,12 +85,10 @@ bin/env_parallel.ash netbsd copy netbsd bin/env_parallel.ash env_parallel.ash
|
||||||
bin/env_parallel.ash openbsd copy openbsd bin/env_parallel.ash env_parallel.ash
|
bin/env_parallel.ash openbsd copy openbsd bin/env_parallel.ash env_parallel.ash
|
||||||
bin/env_parallel.ash freebsd copy freebsd bin/env_parallel.ash env_parallel.ash
|
bin/env_parallel.ash freebsd copy freebsd bin/env_parallel.ash env_parallel.ash
|
||||||
bin/env_parallel.ash debian copy debian bin/env_parallel.ash env_parallel.ash
|
bin/env_parallel.ash debian copy debian bin/env_parallel.ash env_parallel.ash
|
||||||
bin/env_parallel.ash hurd copy hurd bin/env_parallel.ash env_parallel.ash
|
|
||||||
bin/env_parallel.ash minix copy minix bin/env_parallel.ash env_parallel.ash
|
bin/env_parallel.ash minix copy minix bin/env_parallel.ash env_parallel.ash
|
||||||
bin/env_parallel.bash qnx copy qnx bin/env_parallel.bash env_parallel.bash
|
bin/env_parallel.bash qnx copy qnx bin/env_parallel.bash env_parallel.bash
|
||||||
bin/env_parallel.bash pidora copy pidora bin/env_parallel.bash env_parallel.bash
|
bin/env_parallel.bash pidora copy pidora bin/env_parallel.bash env_parallel.bash
|
||||||
bin/env_parallel.bash tru64 copy tru64 bin/env_parallel.bash env_parallel.bash
|
bin/env_parallel.bash tru64 copy tru64 bin/env_parallel.bash env_parallel.bash
|
||||||
bin/env_parallel.bash hpux-ia64 copy hpux-ia64 bin/env_parallel.bash env_parallel.bash
|
|
||||||
bin/env_parallel.bash raspbian copy raspbian bin/env_parallel.bash env_parallel.bash
|
bin/env_parallel.bash raspbian copy raspbian bin/env_parallel.bash env_parallel.bash
|
||||||
bin/env_parallel.bash solaris copy solaris bin/env_parallel.bash env_parallel.bash
|
bin/env_parallel.bash solaris copy solaris bin/env_parallel.bash env_parallel.bash
|
||||||
bin/env_parallel.bash openindiana copy openindiana bin/env_parallel.bash env_parallel.bash
|
bin/env_parallel.bash openindiana copy openindiana bin/env_parallel.bash env_parallel.bash
|
||||||
|
@ -116,12 +109,10 @@ bin/env_parallel.bash netbsd copy netbsd bin/env_parallel.bash env_parallel.bash
|
||||||
bin/env_parallel.bash openbsd copy openbsd bin/env_parallel.bash env_parallel.bash
|
bin/env_parallel.bash openbsd copy openbsd bin/env_parallel.bash env_parallel.bash
|
||||||
bin/env_parallel.bash freebsd copy freebsd bin/env_parallel.bash env_parallel.bash
|
bin/env_parallel.bash freebsd copy freebsd bin/env_parallel.bash env_parallel.bash
|
||||||
bin/env_parallel.bash debian copy debian bin/env_parallel.bash env_parallel.bash
|
bin/env_parallel.bash debian copy debian bin/env_parallel.bash env_parallel.bash
|
||||||
bin/env_parallel.bash hurd copy hurd bin/env_parallel.bash env_parallel.bash
|
|
||||||
bin/env_parallel.bash minix copy minix bin/env_parallel.bash env_parallel.bash
|
bin/env_parallel.bash minix copy minix bin/env_parallel.bash env_parallel.bash
|
||||||
bin/env_parallel.csh qnx copy qnx bin/env_parallel.csh env_parallel.csh
|
bin/env_parallel.csh qnx copy qnx bin/env_parallel.csh env_parallel.csh
|
||||||
bin/env_parallel.csh pidora copy pidora bin/env_parallel.csh env_parallel.csh
|
bin/env_parallel.csh pidora copy pidora bin/env_parallel.csh env_parallel.csh
|
||||||
bin/env_parallel.csh tru64 copy tru64 bin/env_parallel.csh env_parallel.csh
|
bin/env_parallel.csh tru64 copy tru64 bin/env_parallel.csh env_parallel.csh
|
||||||
bin/env_parallel.csh hpux-ia64 copy hpux-ia64 bin/env_parallel.csh env_parallel.csh
|
|
||||||
bin/env_parallel.csh raspbian copy raspbian bin/env_parallel.csh env_parallel.csh
|
bin/env_parallel.csh raspbian copy raspbian bin/env_parallel.csh env_parallel.csh
|
||||||
bin/env_parallel.csh solaris copy solaris bin/env_parallel.csh env_parallel.csh
|
bin/env_parallel.csh solaris copy solaris bin/env_parallel.csh env_parallel.csh
|
||||||
bin/env_parallel.csh openindiana copy openindiana bin/env_parallel.csh env_parallel.csh
|
bin/env_parallel.csh openindiana copy openindiana bin/env_parallel.csh env_parallel.csh
|
||||||
|
@ -142,12 +133,10 @@ bin/env_parallel.csh netbsd copy netbsd bin/env_parallel.csh env_parallel.csh
|
||||||
bin/env_parallel.csh openbsd copy openbsd bin/env_parallel.csh env_parallel.csh
|
bin/env_parallel.csh openbsd copy openbsd bin/env_parallel.csh env_parallel.csh
|
||||||
bin/env_parallel.csh freebsd copy freebsd bin/env_parallel.csh env_parallel.csh
|
bin/env_parallel.csh freebsd copy freebsd bin/env_parallel.csh env_parallel.csh
|
||||||
bin/env_parallel.csh debian copy debian bin/env_parallel.csh env_parallel.csh
|
bin/env_parallel.csh debian copy debian bin/env_parallel.csh env_parallel.csh
|
||||||
bin/env_parallel.csh hurd copy hurd bin/env_parallel.csh env_parallel.csh
|
|
||||||
bin/env_parallel.csh minix copy minix bin/env_parallel.csh env_parallel.csh
|
bin/env_parallel.csh minix copy minix bin/env_parallel.csh env_parallel.csh
|
||||||
bin/env_parallel.dash qnx copy qnx bin/env_parallel.dash env_parallel.dash
|
bin/env_parallel.dash qnx copy qnx bin/env_parallel.dash env_parallel.dash
|
||||||
bin/env_parallel.dash pidora copy pidora bin/env_parallel.dash env_parallel.dash
|
bin/env_parallel.dash pidora copy pidora bin/env_parallel.dash env_parallel.dash
|
||||||
bin/env_parallel.dash tru64 copy tru64 bin/env_parallel.dash env_parallel.dash
|
bin/env_parallel.dash tru64 copy tru64 bin/env_parallel.dash env_parallel.dash
|
||||||
bin/env_parallel.dash hpux-ia64 copy hpux-ia64 bin/env_parallel.dash env_parallel.dash
|
|
||||||
bin/env_parallel.dash raspbian copy raspbian bin/env_parallel.dash env_parallel.dash
|
bin/env_parallel.dash raspbian copy raspbian bin/env_parallel.dash env_parallel.dash
|
||||||
bin/env_parallel.dash solaris copy solaris bin/env_parallel.dash env_parallel.dash
|
bin/env_parallel.dash solaris copy solaris bin/env_parallel.dash env_parallel.dash
|
||||||
bin/env_parallel.dash openindiana copy openindiana bin/env_parallel.dash env_parallel.dash
|
bin/env_parallel.dash openindiana copy openindiana bin/env_parallel.dash env_parallel.dash
|
||||||
|
@ -168,12 +157,10 @@ bin/env_parallel.dash netbsd copy netbsd bin/env_parallel.dash env_parallel.dash
|
||||||
bin/env_parallel.dash openbsd copy openbsd bin/env_parallel.dash env_parallel.dash
|
bin/env_parallel.dash openbsd copy openbsd bin/env_parallel.dash env_parallel.dash
|
||||||
bin/env_parallel.dash freebsd copy freebsd bin/env_parallel.dash env_parallel.dash
|
bin/env_parallel.dash freebsd copy freebsd bin/env_parallel.dash env_parallel.dash
|
||||||
bin/env_parallel.dash debian copy debian bin/env_parallel.dash env_parallel.dash
|
bin/env_parallel.dash debian copy debian bin/env_parallel.dash env_parallel.dash
|
||||||
bin/env_parallel.dash hurd copy hurd bin/env_parallel.dash env_parallel.dash
|
|
||||||
bin/env_parallel.dash minix copy minix bin/env_parallel.dash env_parallel.dash
|
bin/env_parallel.dash minix copy minix bin/env_parallel.dash env_parallel.dash
|
||||||
bin/env_parallel.fish qnx copy qnx bin/env_parallel.fish env_parallel.fish
|
bin/env_parallel.fish qnx copy qnx bin/env_parallel.fish env_parallel.fish
|
||||||
bin/env_parallel.fish pidora copy pidora bin/env_parallel.fish env_parallel.fish
|
bin/env_parallel.fish pidora copy pidora bin/env_parallel.fish env_parallel.fish
|
||||||
bin/env_parallel.fish tru64 copy tru64 bin/env_parallel.fish env_parallel.fish
|
bin/env_parallel.fish tru64 copy tru64 bin/env_parallel.fish env_parallel.fish
|
||||||
bin/env_parallel.fish hpux-ia64 copy hpux-ia64 bin/env_parallel.fish env_parallel.fish
|
|
||||||
bin/env_parallel.fish raspbian copy raspbian bin/env_parallel.fish env_parallel.fish
|
bin/env_parallel.fish raspbian copy raspbian bin/env_parallel.fish env_parallel.fish
|
||||||
bin/env_parallel.fish solaris copy solaris bin/env_parallel.fish env_parallel.fish
|
bin/env_parallel.fish solaris copy solaris bin/env_parallel.fish env_parallel.fish
|
||||||
bin/env_parallel.fish openindiana copy openindiana bin/env_parallel.fish env_parallel.fish
|
bin/env_parallel.fish openindiana copy openindiana bin/env_parallel.fish env_parallel.fish
|
||||||
|
@ -194,12 +181,10 @@ bin/env_parallel.fish netbsd copy netbsd bin/env_parallel.fish env_parallel.fish
|
||||||
bin/env_parallel.fish openbsd copy openbsd bin/env_parallel.fish env_parallel.fish
|
bin/env_parallel.fish openbsd copy openbsd bin/env_parallel.fish env_parallel.fish
|
||||||
bin/env_parallel.fish freebsd copy freebsd bin/env_parallel.fish env_parallel.fish
|
bin/env_parallel.fish freebsd copy freebsd bin/env_parallel.fish env_parallel.fish
|
||||||
bin/env_parallel.fish debian copy debian bin/env_parallel.fish env_parallel.fish
|
bin/env_parallel.fish debian copy debian bin/env_parallel.fish env_parallel.fish
|
||||||
bin/env_parallel.fish hurd copy hurd bin/env_parallel.fish env_parallel.fish
|
|
||||||
bin/env_parallel.fish minix copy minix bin/env_parallel.fish env_parallel.fish
|
bin/env_parallel.fish minix copy minix bin/env_parallel.fish env_parallel.fish
|
||||||
bin/env_parallel.ksh qnx copy qnx bin/env_parallel.ksh env_parallel.ksh
|
bin/env_parallel.ksh qnx copy qnx bin/env_parallel.ksh env_parallel.ksh
|
||||||
bin/env_parallel.ksh pidora copy pidora bin/env_parallel.ksh env_parallel.ksh
|
bin/env_parallel.ksh pidora copy pidora bin/env_parallel.ksh env_parallel.ksh
|
||||||
bin/env_parallel.ksh tru64 copy tru64 bin/env_parallel.ksh env_parallel.ksh
|
bin/env_parallel.ksh tru64 copy tru64 bin/env_parallel.ksh env_parallel.ksh
|
||||||
bin/env_parallel.ksh hpux-ia64 copy hpux-ia64 bin/env_parallel.ksh env_parallel.ksh
|
|
||||||
bin/env_parallel.ksh raspbian copy raspbian bin/env_parallel.ksh env_parallel.ksh
|
bin/env_parallel.ksh raspbian copy raspbian bin/env_parallel.ksh env_parallel.ksh
|
||||||
bin/env_parallel.ksh solaris copy solaris bin/env_parallel.ksh env_parallel.ksh
|
bin/env_parallel.ksh solaris copy solaris bin/env_parallel.ksh env_parallel.ksh
|
||||||
bin/env_parallel.ksh openindiana copy openindiana bin/env_parallel.ksh env_parallel.ksh
|
bin/env_parallel.ksh openindiana copy openindiana bin/env_parallel.ksh env_parallel.ksh
|
||||||
|
@ -220,12 +205,10 @@ bin/env_parallel.ksh netbsd copy netbsd bin/env_parallel.ksh env_parallel.ksh
|
||||||
bin/env_parallel.ksh openbsd copy openbsd bin/env_parallel.ksh env_parallel.ksh
|
bin/env_parallel.ksh openbsd copy openbsd bin/env_parallel.ksh env_parallel.ksh
|
||||||
bin/env_parallel.ksh freebsd copy freebsd bin/env_parallel.ksh env_parallel.ksh
|
bin/env_parallel.ksh freebsd copy freebsd bin/env_parallel.ksh env_parallel.ksh
|
||||||
bin/env_parallel.ksh debian copy debian bin/env_parallel.ksh env_parallel.ksh
|
bin/env_parallel.ksh debian copy debian bin/env_parallel.ksh env_parallel.ksh
|
||||||
bin/env_parallel.ksh hurd copy hurd bin/env_parallel.ksh env_parallel.ksh
|
|
||||||
bin/env_parallel.ksh minix copy minix bin/env_parallel.ksh env_parallel.ksh
|
bin/env_parallel.ksh minix copy minix bin/env_parallel.ksh env_parallel.ksh
|
||||||
bin/env_parallel.mksh qnx copy qnx bin/env_parallel.mksh env_parallel.mksh
|
bin/env_parallel.mksh qnx copy qnx bin/env_parallel.mksh env_parallel.mksh
|
||||||
bin/env_parallel.mksh pidora copy pidora bin/env_parallel.mksh env_parallel.mksh
|
bin/env_parallel.mksh pidora copy pidora bin/env_parallel.mksh env_parallel.mksh
|
||||||
bin/env_parallel.mksh tru64 copy tru64 bin/env_parallel.mksh env_parallel.mksh
|
bin/env_parallel.mksh tru64 copy tru64 bin/env_parallel.mksh env_parallel.mksh
|
||||||
bin/env_parallel.mksh hpux-ia64 copy hpux-ia64 bin/env_parallel.mksh env_parallel.mksh
|
|
||||||
bin/env_parallel.mksh raspbian copy raspbian bin/env_parallel.mksh env_parallel.mksh
|
bin/env_parallel.mksh raspbian copy raspbian bin/env_parallel.mksh env_parallel.mksh
|
||||||
bin/env_parallel.mksh solaris copy solaris bin/env_parallel.mksh env_parallel.mksh
|
bin/env_parallel.mksh solaris copy solaris bin/env_parallel.mksh env_parallel.mksh
|
||||||
bin/env_parallel.mksh openindiana copy openindiana bin/env_parallel.mksh env_parallel.mksh
|
bin/env_parallel.mksh openindiana copy openindiana bin/env_parallel.mksh env_parallel.mksh
|
||||||
|
@ -246,12 +229,10 @@ bin/env_parallel.mksh netbsd copy netbsd bin/env_parallel.mksh env_parallel.mksh
|
||||||
bin/env_parallel.mksh openbsd copy openbsd bin/env_parallel.mksh env_parallel.mksh
|
bin/env_parallel.mksh openbsd copy openbsd bin/env_parallel.mksh env_parallel.mksh
|
||||||
bin/env_parallel.mksh freebsd copy freebsd bin/env_parallel.mksh env_parallel.mksh
|
bin/env_parallel.mksh freebsd copy freebsd bin/env_parallel.mksh env_parallel.mksh
|
||||||
bin/env_parallel.mksh debian copy debian bin/env_parallel.mksh env_parallel.mksh
|
bin/env_parallel.mksh debian copy debian bin/env_parallel.mksh env_parallel.mksh
|
||||||
bin/env_parallel.mksh hurd copy hurd bin/env_parallel.mksh env_parallel.mksh
|
|
||||||
bin/env_parallel.mksh minix copy minix bin/env_parallel.mksh env_parallel.mksh
|
bin/env_parallel.mksh minix copy minix bin/env_parallel.mksh env_parallel.mksh
|
||||||
bin/env_parallel.pdksh qnx copy qnx bin/env_parallel.pdksh env_parallel.pdksh
|
bin/env_parallel.pdksh qnx copy qnx bin/env_parallel.pdksh env_parallel.pdksh
|
||||||
bin/env_parallel.pdksh pidora copy pidora bin/env_parallel.pdksh env_parallel.pdksh
|
bin/env_parallel.pdksh pidora copy pidora bin/env_parallel.pdksh env_parallel.pdksh
|
||||||
bin/env_parallel.pdksh tru64 copy tru64 bin/env_parallel.pdksh env_parallel.pdksh
|
bin/env_parallel.pdksh tru64 copy tru64 bin/env_parallel.pdksh env_parallel.pdksh
|
||||||
bin/env_parallel.pdksh hpux-ia64 copy hpux-ia64 bin/env_parallel.pdksh env_parallel.pdksh
|
|
||||||
bin/env_parallel.pdksh raspbian copy raspbian bin/env_parallel.pdksh env_parallel.pdksh
|
bin/env_parallel.pdksh raspbian copy raspbian bin/env_parallel.pdksh env_parallel.pdksh
|
||||||
bin/env_parallel.pdksh solaris copy solaris bin/env_parallel.pdksh env_parallel.pdksh
|
bin/env_parallel.pdksh solaris copy solaris bin/env_parallel.pdksh env_parallel.pdksh
|
||||||
bin/env_parallel.pdksh openindiana copy openindiana bin/env_parallel.pdksh env_parallel.pdksh
|
bin/env_parallel.pdksh openindiana copy openindiana bin/env_parallel.pdksh env_parallel.pdksh
|
||||||
|
@ -272,12 +253,10 @@ bin/env_parallel.pdksh netbsd copy netbsd bin/env_parallel.pdksh env_parallel.pd
|
||||||
bin/env_parallel.pdksh openbsd copy openbsd bin/env_parallel.pdksh env_parallel.pdksh
|
bin/env_parallel.pdksh openbsd copy openbsd bin/env_parallel.pdksh env_parallel.pdksh
|
||||||
bin/env_parallel.pdksh freebsd copy freebsd bin/env_parallel.pdksh env_parallel.pdksh
|
bin/env_parallel.pdksh freebsd copy freebsd bin/env_parallel.pdksh env_parallel.pdksh
|
||||||
bin/env_parallel.pdksh debian copy debian bin/env_parallel.pdksh env_parallel.pdksh
|
bin/env_parallel.pdksh debian copy debian bin/env_parallel.pdksh env_parallel.pdksh
|
||||||
bin/env_parallel.pdksh hurd copy hurd bin/env_parallel.pdksh env_parallel.pdksh
|
|
||||||
bin/env_parallel.pdksh minix copy minix bin/env_parallel.pdksh env_parallel.pdksh
|
bin/env_parallel.pdksh minix copy minix bin/env_parallel.pdksh env_parallel.pdksh
|
||||||
bin/env_parallel.sh qnx copy qnx bin/env_parallel.sh env_parallel.sh
|
bin/env_parallel.sh qnx copy qnx bin/env_parallel.sh env_parallel.sh
|
||||||
bin/env_parallel.sh pidora copy pidora bin/env_parallel.sh env_parallel.sh
|
bin/env_parallel.sh pidora copy pidora bin/env_parallel.sh env_parallel.sh
|
||||||
bin/env_parallel.sh tru64 copy tru64 bin/env_parallel.sh env_parallel.sh
|
bin/env_parallel.sh tru64 copy tru64 bin/env_parallel.sh env_parallel.sh
|
||||||
bin/env_parallel.sh hpux-ia64 copy hpux-ia64 bin/env_parallel.sh env_parallel.sh
|
|
||||||
bin/env_parallel.sh raspbian copy raspbian bin/env_parallel.sh env_parallel.sh
|
bin/env_parallel.sh raspbian copy raspbian bin/env_parallel.sh env_parallel.sh
|
||||||
bin/env_parallel.sh solaris copy solaris bin/env_parallel.sh env_parallel.sh
|
bin/env_parallel.sh solaris copy solaris bin/env_parallel.sh env_parallel.sh
|
||||||
bin/env_parallel.sh openindiana copy openindiana bin/env_parallel.sh env_parallel.sh
|
bin/env_parallel.sh openindiana copy openindiana bin/env_parallel.sh env_parallel.sh
|
||||||
|
@ -298,12 +277,10 @@ bin/env_parallel.sh netbsd copy netbsd bin/env_parallel.sh env_parallel.sh
|
||||||
bin/env_parallel.sh openbsd copy openbsd bin/env_parallel.sh env_parallel.sh
|
bin/env_parallel.sh openbsd copy openbsd bin/env_parallel.sh env_parallel.sh
|
||||||
bin/env_parallel.sh freebsd copy freebsd bin/env_parallel.sh env_parallel.sh
|
bin/env_parallel.sh freebsd copy freebsd bin/env_parallel.sh env_parallel.sh
|
||||||
bin/env_parallel.sh debian copy debian bin/env_parallel.sh env_parallel.sh
|
bin/env_parallel.sh debian copy debian bin/env_parallel.sh env_parallel.sh
|
||||||
bin/env_parallel.sh hurd copy hurd bin/env_parallel.sh env_parallel.sh
|
|
||||||
bin/env_parallel.sh minix copy minix bin/env_parallel.sh env_parallel.sh
|
bin/env_parallel.sh minix copy minix bin/env_parallel.sh env_parallel.sh
|
||||||
bin/env_parallel.tcsh qnx copy qnx bin/env_parallel.tcsh env_parallel.tcsh
|
bin/env_parallel.tcsh qnx copy qnx bin/env_parallel.tcsh env_parallel.tcsh
|
||||||
bin/env_parallel.tcsh pidora copy pidora bin/env_parallel.tcsh env_parallel.tcsh
|
bin/env_parallel.tcsh pidora copy pidora bin/env_parallel.tcsh env_parallel.tcsh
|
||||||
bin/env_parallel.tcsh tru64 copy tru64 bin/env_parallel.tcsh env_parallel.tcsh
|
bin/env_parallel.tcsh tru64 copy tru64 bin/env_parallel.tcsh env_parallel.tcsh
|
||||||
bin/env_parallel.tcsh hpux-ia64 copy hpux-ia64 bin/env_parallel.tcsh env_parallel.tcsh
|
|
||||||
bin/env_parallel.tcsh raspbian copy raspbian bin/env_parallel.tcsh env_parallel.tcsh
|
bin/env_parallel.tcsh raspbian copy raspbian bin/env_parallel.tcsh env_parallel.tcsh
|
||||||
bin/env_parallel.tcsh solaris copy solaris bin/env_parallel.tcsh env_parallel.tcsh
|
bin/env_parallel.tcsh solaris copy solaris bin/env_parallel.tcsh env_parallel.tcsh
|
||||||
bin/env_parallel.tcsh openindiana copy openindiana bin/env_parallel.tcsh env_parallel.tcsh
|
bin/env_parallel.tcsh openindiana copy openindiana bin/env_parallel.tcsh env_parallel.tcsh
|
||||||
|
@ -324,12 +301,10 @@ bin/env_parallel.tcsh netbsd copy netbsd bin/env_parallel.tcsh env_parallel.tcsh
|
||||||
bin/env_parallel.tcsh openbsd copy openbsd bin/env_parallel.tcsh env_parallel.tcsh
|
bin/env_parallel.tcsh openbsd copy openbsd bin/env_parallel.tcsh env_parallel.tcsh
|
||||||
bin/env_parallel.tcsh freebsd copy freebsd bin/env_parallel.tcsh env_parallel.tcsh
|
bin/env_parallel.tcsh freebsd copy freebsd bin/env_parallel.tcsh env_parallel.tcsh
|
||||||
bin/env_parallel.tcsh debian copy debian bin/env_parallel.tcsh env_parallel.tcsh
|
bin/env_parallel.tcsh debian copy debian bin/env_parallel.tcsh env_parallel.tcsh
|
||||||
bin/env_parallel.tcsh hurd copy hurd bin/env_parallel.tcsh env_parallel.tcsh
|
|
||||||
bin/env_parallel.tcsh minix copy minix bin/env_parallel.tcsh env_parallel.tcsh
|
bin/env_parallel.tcsh minix copy minix bin/env_parallel.tcsh env_parallel.tcsh
|
||||||
bin/env_parallel.zsh qnx copy qnx bin/env_parallel.zsh env_parallel.zsh
|
bin/env_parallel.zsh qnx copy qnx bin/env_parallel.zsh env_parallel.zsh
|
||||||
bin/env_parallel.zsh pidora copy pidora bin/env_parallel.zsh env_parallel.zsh
|
bin/env_parallel.zsh pidora copy pidora bin/env_parallel.zsh env_parallel.zsh
|
||||||
bin/env_parallel.zsh tru64 copy tru64 bin/env_parallel.zsh env_parallel.zsh
|
bin/env_parallel.zsh tru64 copy tru64 bin/env_parallel.zsh env_parallel.zsh
|
||||||
bin/env_parallel.zsh hpux-ia64 copy hpux-ia64 bin/env_parallel.zsh env_parallel.zsh
|
|
||||||
bin/env_parallel.zsh raspbian copy raspbian bin/env_parallel.zsh env_parallel.zsh
|
bin/env_parallel.zsh raspbian copy raspbian bin/env_parallel.zsh env_parallel.zsh
|
||||||
bin/env_parallel.zsh solaris copy solaris bin/env_parallel.zsh env_parallel.zsh
|
bin/env_parallel.zsh solaris copy solaris bin/env_parallel.zsh env_parallel.zsh
|
||||||
bin/env_parallel.zsh openindiana copy openindiana bin/env_parallel.zsh env_parallel.zsh
|
bin/env_parallel.zsh openindiana copy openindiana bin/env_parallel.zsh env_parallel.zsh
|
||||||
|
@ -350,12 +325,10 @@ bin/env_parallel.zsh netbsd copy netbsd bin/env_parallel.zsh env_parallel.zsh
|
||||||
bin/env_parallel.zsh openbsd copy openbsd bin/env_parallel.zsh env_parallel.zsh
|
bin/env_parallel.zsh openbsd copy openbsd bin/env_parallel.zsh env_parallel.zsh
|
||||||
bin/env_parallel.zsh freebsd copy freebsd bin/env_parallel.zsh env_parallel.zsh
|
bin/env_parallel.zsh freebsd copy freebsd bin/env_parallel.zsh env_parallel.zsh
|
||||||
bin/env_parallel.zsh debian copy debian bin/env_parallel.zsh env_parallel.zsh
|
bin/env_parallel.zsh debian copy debian bin/env_parallel.zsh env_parallel.zsh
|
||||||
bin/env_parallel.zsh hurd copy hurd bin/env_parallel.zsh env_parallel.zsh
|
|
||||||
bin/env_parallel.zsh minix copy minix bin/env_parallel.zsh env_parallel.zsh
|
bin/env_parallel.zsh minix copy minix bin/env_parallel.zsh env_parallel.zsh
|
||||||
bin/parcat qnx copy qnx bin/parcat parcat
|
bin/parcat qnx copy qnx bin/parcat parcat
|
||||||
bin/parcat pidora copy pidora bin/parcat parcat
|
bin/parcat pidora copy pidora bin/parcat parcat
|
||||||
bin/parcat tru64 copy tru64 bin/parcat parcat
|
bin/parcat tru64 copy tru64 bin/parcat parcat
|
||||||
bin/parcat hpux-ia64 copy hpux-ia64 bin/parcat parcat
|
|
||||||
bin/parcat raspbian copy raspbian bin/parcat parcat
|
bin/parcat raspbian copy raspbian bin/parcat parcat
|
||||||
bin/parcat solaris copy solaris bin/parcat parcat
|
bin/parcat solaris copy solaris bin/parcat parcat
|
||||||
bin/parcat openindiana copy openindiana bin/parcat parcat
|
bin/parcat openindiana copy openindiana bin/parcat parcat
|
||||||
|
@ -376,7 +349,6 @@ bin/parcat netbsd copy netbsd bin/parcat parcat
|
||||||
bin/parcat openbsd copy openbsd bin/parcat parcat
|
bin/parcat openbsd copy openbsd bin/parcat parcat
|
||||||
bin/parcat freebsd copy freebsd bin/parcat parcat
|
bin/parcat freebsd copy freebsd bin/parcat parcat
|
||||||
bin/parcat debian copy debian bin/parcat parcat
|
bin/parcat debian copy debian bin/parcat parcat
|
||||||
bin/parcat hurd copy hurd bin/parcat parcat
|
|
||||||
bin/parcat minix copy minix bin/parcat parcat
|
bin/parcat minix copy minix bin/parcat parcat
|
||||||
Done copying
|
Done copying
|
||||||
|
|
||||||
|
@ -391,9 +363,8 @@ aix Works on aix7
|
||||||
centos Works on centos.polarhome.com
|
centos Works on centos.polarhome.com
|
||||||
debian Works on debian
|
debian Works on debian
|
||||||
debian-ppc Works on debian-ppc
|
debian-ppc Works on debian-ppc
|
||||||
freebsd Syntax error: Bad fd number
|
freebsd Works on freebsd.polarhome.com
|
||||||
hpux Works on hpux64
|
hpux Works on hpux64
|
||||||
hpux-ia64 Works on hpux-ia64
|
|
||||||
macosx Works on macosx.polarhome.com
|
macosx Works on macosx.polarhome.com
|
||||||
mandriva Works on mandriva.polarhome.com
|
mandriva Works on mandriva.polarhome.com
|
||||||
miros Works on miros.polarhome.com
|
miros Works on miros.polarhome.com
|
||||||
|
@ -402,7 +373,6 @@ openbsd Works on openbsd.polarhome.com
|
||||||
openindiana Works on openindiana
|
openindiana Works on openindiana
|
||||||
pidora Works on pidora
|
pidora Works on pidora
|
||||||
qnx Works on qnx
|
qnx Works on qnx
|
||||||
qnx /bin/sh: >&/dev/null : illegal file descriptor name
|
|
||||||
qnx parallel: Warning: Cannot figure out number of cpus. Using 1.
|
qnx parallel: Warning: Cannot figure out number of cpus. Using 1.
|
||||||
raspbian Works on raspbian
|
raspbian Works on raspbian
|
||||||
redhat Works on redhat.polarhome.com
|
redhat Works on redhat.polarhome.com
|
||||||
|
@ -413,7 +383,6 @@ suse Works on suse
|
||||||
tru64 Works on tru64.polarhome.com
|
tru64 Works on tru64.polarhome.com
|
||||||
ubuntu Works on ubuntu
|
ubuntu Works on ubuntu
|
||||||
unixware Works on unixware.polarhome.com
|
unixware Works on unixware.polarhome.com
|
||||||
unixware UX:sh (/bin/sh): ERROR: source: Not found
|
|
||||||
echo
|
echo
|
||||||
echo '### --number-of-cores/--number-of-cpus should work with no error'
|
echo '### --number-of-cores/--number-of-cpus should work with no error'
|
||||||
echo
|
echo
|
||||||
|
@ -430,12 +399,13 @@ debian 1
|
||||||
debian 2
|
debian 2
|
||||||
debian-ppc 1
|
debian-ppc 1
|
||||||
debian-ppc 1
|
debian-ppc 1
|
||||||
freebsd Syntax error: Bad fd number
|
freebsd 1
|
||||||
|
freebsd 1
|
||||||
hpux 1
|
hpux 1
|
||||||
hpux 1
|
hpux 1
|
||||||
hpux-ia64 1
|
hpux-ia64 1
|
||||||
hpux-ia64 1
|
hpux-ia64 1
|
||||||
macosx 2
|
macosx 1
|
||||||
macosx 2
|
macosx 2
|
||||||
mandriva 1
|
mandriva 1
|
||||||
mandriva 1
|
mandriva 1
|
||||||
|
@ -451,7 +421,6 @@ pidora 1
|
||||||
pidora 1
|
pidora 1
|
||||||
qnx 1
|
qnx 1
|
||||||
qnx 1
|
qnx 1
|
||||||
qnx /bin/sh: >&/dev/null : illegal file descriptor name
|
|
||||||
qnx parallel: Warning: Cannot figure out number of cpus. Using 1.
|
qnx parallel: Warning: Cannot figure out number of cpus. Using 1.
|
||||||
qnx parallel: Warning: Cannot figure out number of cpus. Using 1.
|
qnx parallel: Warning: Cannot figure out number of cpus. Using 1.
|
||||||
raspbian 1
|
raspbian 1
|
||||||
|
@ -460,9 +429,9 @@ redhat 1
|
||||||
redhat 2
|
redhat 2
|
||||||
scosysv 1
|
scosysv 1
|
||||||
scosysv 1
|
scosysv 1
|
||||||
solaris
|
|
||||||
solaris 2
|
solaris 2
|
||||||
solaris-x86
|
solaris 2
|
||||||
|
solaris-x86 1
|
||||||
solaris-x86 1
|
solaris-x86 1
|
||||||
suse 1
|
suse 1
|
||||||
suse 1
|
suse 1
|
||||||
|
@ -472,7 +441,6 @@ ubuntu 1
|
||||||
ubuntu 2
|
ubuntu 2
|
||||||
unixware 1
|
unixware 1
|
||||||
unixware 1
|
unixware 1
|
||||||
unixware UX:sh (/bin/sh): ERROR: source: Not found
|
|
||||||
aix 1
|
aix 1
|
||||||
aix 1
|
aix 1
|
||||||
centos 1
|
centos 1
|
||||||
|
@ -481,7 +449,8 @@ debian 2
|
||||||
debian 2
|
debian 2
|
||||||
debian-ppc 1
|
debian-ppc 1
|
||||||
debian-ppc 1
|
debian-ppc 1
|
||||||
freebsd Syntax error: Bad fd number
|
freebsd 1
|
||||||
|
freebsd 1
|
||||||
hpux 1
|
hpux 1
|
||||||
hpux 1
|
hpux 1
|
||||||
hpux-ia64 2
|
hpux-ia64 2
|
||||||
|
@ -502,7 +471,6 @@ pidora 1
|
||||||
pidora 1
|
pidora 1
|
||||||
qnx 1
|
qnx 1
|
||||||
qnx 1
|
qnx 1
|
||||||
qnx /bin/sh: >&/dev/null : illegal file descriptor name
|
|
||||||
qnx parallel: Warning: Cannot figure out number of cpus. Using 1.
|
qnx parallel: Warning: Cannot figure out number of cpus. Using 1.
|
||||||
qnx parallel: Warning: Cannot figure out number of cpus. Using 1.
|
qnx parallel: Warning: Cannot figure out number of cpus. Using 1.
|
||||||
raspbian 1
|
raspbian 1
|
||||||
|
@ -523,7 +491,6 @@ ubuntu 2
|
||||||
ubuntu 2
|
ubuntu 2
|
||||||
unixware 1
|
unixware 1
|
||||||
unixware 1
|
unixware 1
|
||||||
unixware UX:sh (/bin/sh): ERROR: source: Not found
|
|
||||||
echo
|
echo
|
||||||
echo '### Fails if tmpdir is R/O'
|
echo '### Fails if tmpdir is R/O'
|
||||||
echo
|
echo
|
||||||
|
@ -542,7 +509,8 @@ debian Error in tempfile() using template /XXXXXXXX.arg: Could not create temp f
|
||||||
debian OK readonly tmp
|
debian OK readonly tmp
|
||||||
debian-ppc Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
|
debian-ppc Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
|
||||||
debian-ppc OK readonly tmp
|
debian-ppc OK readonly tmp
|
||||||
freebsd Syntax error: Bad fd number
|
freebsd Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
|
||||||
|
freebsd OK readonly tmp
|
||||||
hpux Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
|
hpux Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
|
||||||
hpux OK readonly tmp
|
hpux OK readonly tmp
|
||||||
hpux-ia64 Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable
|
hpux-ia64 Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable
|
||||||
|
@ -566,7 +534,6 @@ pidora Error in tempfile() using template /XXXXXXXX.arg: Could not create temp f
|
||||||
pidora OK readonly tmp
|
pidora OK readonly tmp
|
||||||
qnx Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
|
qnx Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
|
||||||
qnx OK readonly tmp
|
qnx OK readonly tmp
|
||||||
qnx /bin/sh: >&/dev/null : illegal file descriptor name
|
|
||||||
raspbian Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
|
raspbian Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
|
||||||
raspbian OK readonly tmp
|
raspbian OK readonly tmp
|
||||||
redhat Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
|
redhat Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
|
||||||
|
@ -577,7 +544,7 @@ scosysv OK readonly tmp
|
||||||
solaris Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable
|
solaris Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable
|
||||||
solaris at /home/t/tange/bin/parallel line 0000
|
solaris at /home/t/tange/bin/parallel line 0000
|
||||||
solaris OK readonly tmp
|
solaris OK readonly tmp
|
||||||
solaris-x86 Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/tange/bin/parallel line 0000
|
solaris-x86 Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at ~/bin/parallel line 0000
|
||||||
solaris-x86 OK readonly tmp
|
solaris-x86 OK readonly tmp
|
||||||
suse Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
|
suse Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
|
||||||
suse OK readonly tmp
|
suse OK readonly tmp
|
||||||
|
@ -588,7 +555,6 @@ ubuntu Error in tempfile() using template /XXXXXXXX.arg: Could not create temp f
|
||||||
ubuntu OK readonly tmp
|
ubuntu OK readonly tmp
|
||||||
unixware Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
|
unixware Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
|
||||||
unixware OK readonly tmp
|
unixware OK readonly tmp
|
||||||
unixware UX:sh (/bin/sh): ERROR: source: Not found
|
|
||||||
echo
|
echo
|
||||||
echo '### Does exporting a bash function make parallel fail?'
|
echo '### Does exporting a bash function make parallel fail?'
|
||||||
echo 'If login shell is not bash compatible it fails'
|
echo 'If login shell is not bash compatible it fails'
|
||||||
|
@ -599,7 +565,7 @@ unixware UX:sh (/bin/sh): ERROR: source: Not found
|
||||||
cat <(echo bash only A)
|
cat <(echo bash only A)
|
||||||
}
|
}
|
||||||
export -f funcA;
|
export -f funcA;
|
||||||
bin/parallel funcA ::: 1' 2>&1 | sort
|
bin/parallel funcA ::: 1' 2>&1 | LANG=C sort
|
||||||
|
|
||||||
### Does exporting a bash function make parallel fail?
|
### Does exporting a bash function make parallel fail?
|
||||||
If login shell is not bash compatible it fails
|
If login shell is not bash compatible it fails
|
||||||
|
@ -612,7 +578,8 @@ debian bash only A
|
||||||
debian test funcA
|
debian test funcA
|
||||||
debian-ppc bash only A
|
debian-ppc bash only A
|
||||||
debian-ppc test funcA
|
debian-ppc test funcA
|
||||||
freebsd Syntax error: Bad fd number
|
freebsd Syntax error: "(" unexpected (expecting word)
|
||||||
|
freebsd test funcA
|
||||||
hpux bash only A
|
hpux bash only A
|
||||||
hpux test funcA
|
hpux test funcA
|
||||||
hpux-ia64 bash only A
|
hpux-ia64 bash only A
|
||||||
|
@ -653,7 +620,6 @@ tru64 test funcA
|
||||||
ubuntu bash only A
|
ubuntu bash only A
|
||||||
ubuntu test funcA
|
ubuntu test funcA
|
||||||
unixware UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 3: `(' unexpected
|
unixware UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 3: `(' unexpected
|
||||||
unixware UX:sh (/bin/sh): ERROR: source: Not found
|
|
||||||
unixware test funcA
|
unixware test funcA
|
||||||
echo
|
echo
|
||||||
echo '### Does PARALLEL_SHELL help exporting a bash function'
|
echo '### Does PARALLEL_SHELL help exporting a bash function'
|
||||||
|
@ -725,16 +691,12 @@ ubuntu bash only B
|
||||||
unixware test funcB
|
unixware test funcB
|
||||||
unixware bash only B
|
unixware bash only B
|
||||||
echo
|
echo
|
||||||
echo '### env_parallel echo :::: <(echo OK)'
|
echo '### env_parallel --install'
|
||||||
echo '(bash ksh mksh zsh only)'
|
echo '(bash ksh mksh zsh only)'
|
||||||
echo
|
echo
|
||||||
par_nonall 'bin/env_parallel --install && echo install-OK' 2>&1
|
par_nonall 'bin/env_parallel --install && echo install-OK' 2>&1
|
||||||
par_nonall 'env_parallel echo env_parallel ::: run-OK' 2>&1
|
|
||||||
# csh on NetBSD does not support process substitution
|
|
||||||
par_nonall 'env_parallel echo reading from process substitution :::: <(echo OK)' 2>&1 |
|
|
||||||
grep -v ': /tmp/.*: No such file or directory'
|
|
||||||
|
|
||||||
### env_parallel echo :::: <(echo OK)
|
### env_parallel --install
|
||||||
(bash ksh mksh zsh only)
|
(bash ksh mksh zsh only)
|
||||||
|
|
||||||
aix Installed env_parallel in:
|
aix Installed env_parallel in:
|
||||||
|
@ -781,7 +743,17 @@ debian-ppc /home/t/tange/.profile
|
||||||
debian-ppc /home/t/tange/.cshrc
|
debian-ppc /home/t/tange/.cshrc
|
||||||
debian-ppc /home/t/tange/.tcshrc
|
debian-ppc /home/t/tange/.tcshrc
|
||||||
debian-ppc install-OK
|
debian-ppc install-OK
|
||||||
freebsd Syntax error: Bad fd number
|
freebsd Installed env_parallel in:
|
||||||
|
freebsd /home/t/tange/.bashrc
|
||||||
|
freebsd /home/t/tange/.shrc
|
||||||
|
freebsd /home/t/tange/.zshenv
|
||||||
|
freebsd /home/t/tange/.config/fish/config.fish
|
||||||
|
freebsd /home/t/tange/.kshrc
|
||||||
|
freebsd /home/t/tange/.mkshrc
|
||||||
|
freebsd /home/t/tange/.profile
|
||||||
|
freebsd /home/t/tange/.cshrc
|
||||||
|
freebsd /home/t/tange/.tcshrc
|
||||||
|
freebsd install-OK
|
||||||
hpux Installed env_parallel in:
|
hpux Installed env_parallel in:
|
||||||
hpux /home/t/tange/.bashrc
|
hpux /home/t/tange/.bashrc
|
||||||
hpux /home/t/tange/.shrc
|
hpux /home/t/tange/.shrc
|
||||||
|
@ -893,7 +865,6 @@ qnx /home/t/tange/.profile
|
||||||
qnx /home/t/tange/.cshrc
|
qnx /home/t/tange/.cshrc
|
||||||
qnx /home/t/tange/.tcshrc
|
qnx /home/t/tange/.tcshrc
|
||||||
qnx install-OK
|
qnx install-OK
|
||||||
qnx /bin/sh: >&/dev/null : illegal file descriptor name
|
|
||||||
raspbian Installed env_parallel in:
|
raspbian Installed env_parallel in:
|
||||||
raspbian /home/t/tange/.bashrc
|
raspbian /home/t/tange/.bashrc
|
||||||
raspbian /home/t/tange/.shrc
|
raspbian /home/t/tange/.shrc
|
||||||
|
@ -939,15 +910,15 @@ solaris /home/t/tange/.cshrc
|
||||||
solaris /home/t/tange/.tcshrc
|
solaris /home/t/tange/.tcshrc
|
||||||
solaris install-OK
|
solaris install-OK
|
||||||
solaris-x86 Installed env_parallel in:
|
solaris-x86 Installed env_parallel in:
|
||||||
solaris-x86 /home/tange/.bashrc
|
solaris-x86 ~/.bashrc
|
||||||
solaris-x86 /home/tange/.shrc
|
solaris-x86 ~/.shrc
|
||||||
solaris-x86 /home/tange/.zshenv
|
solaris-x86 ~/.zshenv
|
||||||
solaris-x86 /home/tange/.config/fish/config.fish
|
solaris-x86 ~/.config/fish/config.fish
|
||||||
solaris-x86 /home/tange/.kshrc
|
solaris-x86 ~/.kshrc
|
||||||
solaris-x86 /home/tange/.mkshrc
|
solaris-x86 ~/.mkshrc
|
||||||
solaris-x86 /home/tange/.profile
|
solaris-x86 ~/.profile
|
||||||
solaris-x86 /home/tange/.cshrc
|
solaris-x86 ~/.cshrc
|
||||||
solaris-x86 /home/tange/.tcshrc
|
solaris-x86 ~/.tcshrc
|
||||||
solaris-x86 install-OK
|
solaris-x86 install-OK
|
||||||
suse Installed env_parallel in:
|
suse Installed env_parallel in:
|
||||||
suse /home/t/tange/.bashrc
|
suse /home/t/tange/.bashrc
|
||||||
|
@ -993,12 +964,21 @@ unixware /home/t/tange/.profile
|
||||||
unixware /home/t/tange/.cshrc
|
unixware /home/t/tange/.cshrc
|
||||||
unixware /home/t/tange/.tcshrc
|
unixware /home/t/tange/.tcshrc
|
||||||
unixware install-OK
|
unixware install-OK
|
||||||
unixware UX:sh (/bin/sh): ERROR: source: Not found
|
echo
|
||||||
|
echo '### env_parallel echo env_parallel ::: run-OK'
|
||||||
|
echo '(bash ksh mksh zsh only)'
|
||||||
|
echo
|
||||||
|
par_nonall 'env_parallel echo env_parallel ::: run-OK' 2>&1
|
||||||
|
|
||||||
|
### env_parallel echo env_parallel ::: run-OK
|
||||||
|
(bash ksh mksh zsh only)
|
||||||
|
|
||||||
aix env_parallel run-OK
|
aix env_parallel run-OK
|
||||||
centos env_parallel run-OK
|
centos env_parallel run-OK
|
||||||
debian env_parallel run-OK
|
debian env_parallel run-OK
|
||||||
debian-ppc env_parallel run-OK
|
debian-ppc env_parallel run-OK
|
||||||
freebsd Syntax error: Bad fd number
|
freebsd env_parallel run-OK
|
||||||
|
freebsd Cannot fork: Resource temporarily unavailable
|
||||||
hpux env_parallel run-OK
|
hpux env_parallel run-OK
|
||||||
hpux-ia64 env_parallel run-OK
|
hpux-ia64 env_parallel run-OK
|
||||||
macosx env_parallel run-OK
|
macosx env_parallel run-OK
|
||||||
|
@ -1009,7 +989,6 @@ openbsd env_parallel run-OK
|
||||||
openindiana env_parallel run-OK
|
openindiana env_parallel run-OK
|
||||||
pidora env_parallel run-OK
|
pidora env_parallel run-OK
|
||||||
qnx env_parallel run-OK
|
qnx env_parallel run-OK
|
||||||
qnx /bin/sh: >&/dev/null : illegal file descriptor name
|
|
||||||
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
||||||
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
||||||
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
||||||
|
@ -1024,7 +1003,17 @@ suse env_parallel run-OK
|
||||||
tru64 env_parallel run-OK
|
tru64 env_parallel run-OK
|
||||||
ubuntu env_parallel run-OK
|
ubuntu env_parallel run-OK
|
||||||
unixware env_parallel run-OK
|
unixware env_parallel run-OK
|
||||||
unixware UX:sh (/bin/sh): ERROR: source: Not found
|
echo
|
||||||
|
echo '### env_parallel echo reading from process substitution :::: <(echo OK)'
|
||||||
|
echo '(bash ksh mksh zsh only)'
|
||||||
|
echo
|
||||||
|
# csh on NetBSD does not support process substitution
|
||||||
|
par_nonall 'env_parallel echo reading from process substitution :::: <(echo OK)' 2>&1 |
|
||||||
|
grep -v ': /tmp/.*: No such file or directory'
|
||||||
|
|
||||||
|
### env_parallel echo reading from process substitution :::: <(echo OK)
|
||||||
|
(bash ksh mksh zsh only)
|
||||||
|
|
||||||
aix reading from process substitution OK
|
aix reading from process substitution OK
|
||||||
centos reading from process substitution OK
|
centos reading from process substitution OK
|
||||||
debian reading from process substitution OK
|
debian reading from process substitution OK
|
||||||
|
@ -1051,7 +1040,10 @@ suse reading from process substitution OK
|
||||||
tru64 reading from process substitution OK
|
tru64 reading from process substitution OK
|
||||||
ubuntu reading from process substitution OK
|
ubuntu reading from process substitution OK
|
||||||
unixware UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 1: `(' unexpected
|
unixware UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 1: `(' unexpected
|
||||||
# Test empty command name in process list
|
echo
|
||||||
|
echo '### Test empty command name in process list'
|
||||||
|
echo '(bash ksh mksh zsh only)'
|
||||||
|
echo
|
||||||
test_empty_cmd() {
|
test_empty_cmd() {
|
||||||
echo '### Test if empty command name in process list causes problems'
|
echo '### Test if empty command name in process list causes problems'
|
||||||
perl -e '$0=" ";sleep 1000' &
|
perl -e '$0=" ";sleep 1000' &
|
||||||
|
@ -1062,6 +1054,10 @@ unixware UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 1: `(' unexpected
|
||||||
export -f test_empty_cmd
|
export -f test_empty_cmd
|
||||||
export PARALLEL_SHELL=bin/bash
|
export PARALLEL_SHELL=bin/bash
|
||||||
PARALLEL='--env test_empty_cmd' par_nonall test_empty_cmd 2>&1
|
PARALLEL='--env test_empty_cmd' par_nonall test_empty_cmd 2>&1
|
||||||
|
|
||||||
|
### Test empty command name in process list
|
||||||
|
(bash ksh mksh zsh only)
|
||||||
|
|
||||||
aix ### Test if empty command name in process list causes problems
|
aix ### Test if empty command name in process list causes problems
|
||||||
aix OK_with_empty_cmd
|
aix OK_with_empty_cmd
|
||||||
centos ### Test if empty command name in process list causes problems
|
centos ### Test if empty command name in process list causes problems
|
||||||
|
@ -1127,7 +1123,7 @@ aix 1 2 1 2 3 1 2 3 4
|
||||||
centos 1 2 1 2 3 1 2 3 4
|
centos 1 2 1 2 3 1 2 3 4
|
||||||
debian 1 2 1 2 3 1 2 3 4
|
debian 1 2 1 2 3 1 2 3 4
|
||||||
debian-ppc 1 2 1 2 3 1 2 3 4
|
debian-ppc 1 2 1 2 3 1 2 3 4
|
||||||
freebsd Syntax error: Bad fd number
|
freebsd eval: 1: Syntax error: word unexpected (expecting ")")
|
||||||
hpux
|
hpux
|
||||||
hpux-ia64 1 2 1 2 3 1 2 3 4
|
hpux-ia64 1 2 1 2 3 1 2 3 4
|
||||||
macosx 1 2 1 2 3 1 2 3 4
|
macosx 1 2 1 2 3 1 2 3 4
|
||||||
|
@ -1139,7 +1135,6 @@ openbsd
|
||||||
openindiana 1 2 1 2 3 1 2 3 4
|
openindiana 1 2 1 2 3 1 2 3 4
|
||||||
pidora 1 2 1 2 3 1 2 3 4
|
pidora 1 2 1 2 3 1 2 3 4
|
||||||
qnx
|
qnx
|
||||||
qnx /bin/sh: >&/dev/null : illegal file descriptor name
|
|
||||||
qnx parallel: Warning: Cannot figure out number of cpus. Using 1.
|
qnx parallel: Warning: Cannot figure out number of cpus. Using 1.
|
||||||
qnx /bin/sh: syntax error: `(' unexpected
|
qnx /bin/sh: syntax error: `(' unexpected
|
||||||
raspbian 1 2 1 2 3 1 2 3 4
|
raspbian 1 2 1 2 3 1 2 3 4
|
||||||
|
@ -1150,14 +1145,17 @@ solaris-x86 1 2 1 2 3 1 2 3 4
|
||||||
suse 1 2 1 2 3 1 2 3 4
|
suse 1 2 1 2 3 1 2 3 4
|
||||||
tru64 1 2 1 2 3 1 2 3 4
|
tru64 1 2 1 2 3 1 2 3 4
|
||||||
ubuntu 1 2 1 2 3 1 2 3 4
|
ubuntu 1 2 1 2 3 1 2 3 4
|
||||||
unixware UX:sh (/bin/sh): ERROR: source: Not found
|
|
||||||
unixware UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 1: `arr=' unexpected
|
unixware UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 1: `arr=' unexpected
|
||||||
### env_parset arr seq ::: 2 3 4
|
### env_parset arr seq ::: 2 3 4
|
||||||
aix 2 2 3 2 3 4
|
aix 2 2 3 2 3 4
|
||||||
centos 2 2 3 2 3 4
|
centos 2 2 3 2 3 4
|
||||||
debian 2 2 3 2 3 4
|
debian 2 2 3 2 3 4
|
||||||
debian-ppc 2 2 3 2 3 4
|
debian-ppc 2 2 3 2 3 4
|
||||||
freebsd Syntax error: Bad fd number
|
freebsd Cannot fork: Resource temporarily unavailable
|
||||||
|
freebsd Cannot fork: Resource temporarily unavailable
|
||||||
|
freebsd Cannot fork: Resource temporarily unavailable
|
||||||
|
freebsd Cannot fork: Resource temporarily unavailable
|
||||||
|
freebsd eval: 1: Syntax error: word unexpected (expecting ")")
|
||||||
hpux
|
hpux
|
||||||
hpux-ia64 1 2 1 2 1 2
|
hpux-ia64 1 2 1 2 1 2
|
||||||
macosx 2 2 3 2 3 4
|
macosx 2 2 3 2 3 4
|
||||||
|
@ -1170,7 +1168,6 @@ openbsd
|
||||||
openindiana 2 2 3 2 3 4
|
openindiana 2 2 3 2 3 4
|
||||||
pidora 2 2 3 2 3 4
|
pidora 2 2 3 2 3 4
|
||||||
qnx
|
qnx
|
||||||
qnx /bin/sh: >&/dev/null : illegal file descriptor name
|
|
||||||
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
||||||
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
||||||
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
||||||
|
@ -1184,7 +1181,6 @@ solaris-x86 2 2 3 2 3 4
|
||||||
suse 2 2 3 2 3 4
|
suse 2 2 3 2 3 4
|
||||||
tru64 2 2 3 2 3 4
|
tru64 2 2 3 2 3 4
|
||||||
ubuntu 2 2 3 2 3 4
|
ubuntu 2 2 3 2 3 4
|
||||||
unixware UX:sh (/bin/sh): ERROR: source: Not found
|
|
||||||
unixware UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 1: `arr=' unexpected
|
unixware UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 1: `arr=' unexpected
|
||||||
echo
|
echo
|
||||||
echo '### parset var1,var2,var3 seq ::: 2 3 4'
|
echo '### parset var1,var2,var3 seq ::: 2 3 4'
|
||||||
|
@ -1202,7 +1198,7 @@ aix 1 2,1 2 3,1 2 3 4
|
||||||
centos 1 2,1 2 3,1 2 3 4
|
centos 1 2,1 2 3,1 2 3 4
|
||||||
debian 1 2,1 2 3,1 2 3 4
|
debian 1 2,1 2 3,1 2 3 4
|
||||||
debian-ppc 1 2,1 2 3,1 2 3 4
|
debian-ppc 1 2,1 2 3,1 2 3 4
|
||||||
freebsd Syntax error: Bad fd number
|
freebsd 1 2,1 2 3,1 2 3 4
|
||||||
hpux ,,
|
hpux ,,
|
||||||
hpux-ia64 1 2,1 2 3,1 2 3 4
|
hpux-ia64 1 2,1 2 3,1 2 3 4
|
||||||
macosx 1 2,1 2 3,1 2 3 4
|
macosx 1 2,1 2 3,1 2 3 4
|
||||||
|
@ -1214,7 +1210,6 @@ openbsd ,,
|
||||||
openindiana 1 2,1 2 3,1 2 3 4
|
openindiana 1 2,1 2 3,1 2 3 4
|
||||||
pidora 1 2,1 2 3,1 2 3 4
|
pidora 1 2,1 2 3,1 2 3 4
|
||||||
qnx ,,
|
qnx ,,
|
||||||
qnx /bin/sh: >&/dev/null : illegal file descriptor name
|
|
||||||
qnx parallel: Warning: Cannot figure out number of cpus. Using 1.
|
qnx parallel: Warning: Cannot figure out number of cpus. Using 1.
|
||||||
qnx parallel: Warning: Cannot figure out number of cpus. Using 1.
|
qnx parallel: Warning: Cannot figure out number of cpus. Using 1.
|
||||||
raspbian 1 2,1 2 3,1 2 3 4
|
raspbian 1 2,1 2 3,1 2 3 4
|
||||||
|
@ -1226,13 +1221,17 @@ suse 1 2,1 2 3,1 2 3 4
|
||||||
tru64 1 2,1 2 3,1 2 3 4
|
tru64 1 2,1 2 3,1 2 3 4
|
||||||
ubuntu 1 2,1 2 3,1 2 3 4
|
ubuntu 1 2,1 2 3,1 2 3 4
|
||||||
unixware 1 2,1 2 3,1 2 3 4
|
unixware 1 2,1 2 3,1 2 3 4
|
||||||
unixware UX:sh (/bin/sh): ERROR: source: Not found
|
|
||||||
### env_parset var1,var2,var3 seq ::: 2 3 4
|
### env_parset var1,var2,var3 seq ::: 2 3 4
|
||||||
aix 2,2 3,2 3 4
|
aix 2,2 3,2 3 4
|
||||||
centos 2,2 3,2 3 4
|
centos 2,2 3,2 3 4
|
||||||
debian 2,2 3,2 3 4
|
debian 2,2 3,2 3 4
|
||||||
debian-ppc 2,2 3,2 3 4
|
debian-ppc 2,2 3,2 3 4
|
||||||
freebsd Syntax error: Bad fd number
|
freebsd 2,2 3,2 3 4
|
||||||
|
freebsd Cannot fork: Resource temporarily unavailable
|
||||||
|
freebsd Cannot fork: Resource temporarily unavailable
|
||||||
|
freebsd Cannot fork: Resource temporarily unavailable
|
||||||
|
freebsd Cannot fork: Resource temporarily unavailable
|
||||||
|
freebsd Cannot fork: Resource temporarily unavailable
|
||||||
hpux ,,
|
hpux ,,
|
||||||
hpux-ia64 1 2,1 2,1 2
|
hpux-ia64 1 2,1 2,1 2
|
||||||
macosx 2,2 3,2 3 4
|
macosx 2,2 3,2 3 4
|
||||||
|
@ -1245,7 +1244,6 @@ openbsd ,,
|
||||||
openindiana 2,2 3,2 3 4
|
openindiana 2,2 3,2 3 4
|
||||||
pidora 2,2 3,2 3 4
|
pidora 2,2 3,2 3 4
|
||||||
qnx ,,
|
qnx ,,
|
||||||
qnx /bin/sh: >&/dev/null : illegal file descriptor name
|
|
||||||
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
||||||
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
||||||
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
qnx /bin/sh: compgen: cannot execute - No such file or directory
|
||||||
|
@ -1260,4 +1258,3 @@ suse 2,2 3,2 3 4
|
||||||
tru64 2,2 3,2 3 4
|
tru64 2,2 3,2 3 4
|
||||||
ubuntu 2,2 3,2 3 4
|
ubuntu 2,2 3,2 3 4
|
||||||
unixware 2,2 3,2 3 4
|
unixware 2,2 3,2 3 4
|
||||||
unixware UX:sh (/bin/sh): ERROR: source: Not found
|
|
||||||
|
|
Loading…
Reference in a new issue