I can use 'prtdiag' to get number of CPU by prtdiag command.

$ prtdiag
System Configuration:  Sun Microsystems  sun4u Sun Fire 6800
System clock frequency: 150 MHz
Memory size: 4096 Megabytes

========================= CPUs 

             CPU      Run    E$   CPU      CPU
FRU Name    ID       MHz    MB   Impl.    Mask
----------  -------  ----  ----  -------  ----
/N0/SB1/P2    6      1200   8.0  US-III+  11.0
/N0/SB1/P3    7      1200   8.0  US-III+  11.0
/N0/SB3/P2   14      1200   8.0  US-III+  11.0
/N0/SB3/P3   15      1200   8.0  US-III+  11.0

But, I don't know is there any command could get the number (4 in this example)to let my script use it?


With modern CPUs and their multi-core, multi-thread technologies, you need to define more precisely what you want to count but in your case, psrinfo better suits the job:

psrinfo -p

Note that prtdiag wasn't designed to be parseable and might return a very different output depending on the hardware.

  • For numbers of cores/threads, I often do psrinfo -v | grep -c on-line which isn't the cleanest solution, but it's always worked for me. – alanc Mar 14 '13 at 6:06

Here is a simple set of pipes using psrinfo:

psrinfo -v | grep ^Status | tail -1 | awk '{x = $5 + 1; print "CPUs: " x;}'

Example output:

CPUs: 6


How about

prtdiag | grep -c "^/"

To use the resulting value in a script, use $(prtdiag | grep -c "^/").


Here is a good script to find all the CPU, cores, virtual CPU (threads)


  • 1
    Adding the script from the link would improve the answer. Links do break and then your answer is of no use. – Dave M Dec 18 '13 at 14:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.