Sometimes you need to determine how many CPU cores a system has. This might be when you’re running make to use some or all of your CPU cores or some compression tools that take a CPU cores argument.
If you’re not trying to find this number in a script you can grep the contents of /proc/cpuinfo:
cat /proc/cpuinfo | grep processor
processor : 0
processor : 1
processor : 2
processor : 3
processor : 4
processor : 5
processor : 6
processor : 7
Or you could open top and press 1 which will list all your CPU cores individually:
top - 12:56:04 up 3:04, 1 user, load average: 0.58, 0.41, 0.38
Tasks: 231 total, 1 running, 230 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.7 us, 0.0 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.7 us, 0.7 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.7 us, 1.3 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 6.5 us, 1.3 sy, 0.0 ni, 92.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 4.3 us, 4.9 sy, 0.0 ni, 90.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu6 : 0.7 us, 1.3 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu7 : 0.7 us, 2.0 sy, 0.0 ni, 97.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
GiB Mem : 15.1 total, 8.3 free, 2.6 used, 4.2 buff/cache
GiB Swap: 0.2 total, 0.2 free, 0.0 used. 10.6 avail Mem
Both of these solutions are a difficult to use in a script. If you need that information in an automated way just use nproc. When you run nproc it will output the number of CPU cores and nothing else:
$ nproc
8
If you need to get CPU cores minus N cores pass the --ignore=N flag:
$ nproc --ignore=1
7
You don’t need to employ grep or any other text manipulation or math tools to get the number you need.
Comments
Nothing yet. Say the first thing.
Sign in to join the conversation.