#!/usr/bin/perl -w use strict; $|++; my $ncpu=0; if (( $^O eq "solaris" ) || ( $^O eq "dec_osf" )) { open(CPU,"/usr/sbin/psrinfo |") || die "Can't run psrinfo:$!"; while () { $ncpu += 1; } close(CPU); print "$ncpu\n"; } elsif ( $^O eq "linux" ) { open(CPU,"); close(CPU); if ( $ncpu == 0 ) { # is this Linux on Alpha? open(CPU,"); close(CPU); if ( $cpuline ) { ($cpuline, $ncpu) = split /: /, $cpuline; chomp $ncpu; } } print "$ncpu\n"; } elsif (( $^O eq "darwin" ) || ( $^O eq "openbsd" )) { open(CPU,"/usr/sbin/sysctl -n hw.ncpu|") || die "Can't read sysctl:$!"; print ; close(CPU); } elsif (( $^O eq "freebsd" ) || ( $^O eq "netbsd" )) { open(CPU,"/sbin/sysctl -n hw.ncpu|") || die "Can't read sysctl:$!"; print ; close(CPU); } elsif ( $^O eq "irix" ) { open(CPU,"/usr/sbin/mpadmin -n |") || die "Can't run mpadmin:$!"; while () { $ncpu += 1; } close(CPU); print "$ncpu\n"; } elsif ( $^O eq "hpux" ) { open(CPU,"/usr/bin/mpsched -s |") || die "Can't run mpsched:$!"; my ($cpuline) = grep(/^Processor Count\s+: /,); close(CPU); ($cpuline, $ncpu) = split /: /, $cpuline; print $ncpu; } else { warn "Unknown platform, just saying 1 CPU!\n"; print "1\n"; }