≡ Menu

Linux: Find Number of CPU Cores Command

How do I find out the number of CPU cores available under HP x86_64 Linux serer running on RHEL / Debian Linux 6.x?

You can use the lscpu or nproc command to display the number of processing units available to the current process, which may be less than the number of online processors (please note that not all server supports hotplug a CPU on a running Linux system).

The proc file system is a pseudo-file system which is used as an interface to kernel data structures. It is commonly mounted at /proc. The /proc/cpuinfo file is nothing but a collection of CPU and system architecture dependent items, for each supported architecture a different list. Two common entries are processor which gives CPU number and bogomips; a system constant that is calculated during kernel initialization. SMP machines have information for each CPU.

nproc Example

The nproc command shows the number of processing units available:
# nproc
Sample outputs:


lscpu Command

lscpu gathers CPU architecture information form /proc/cpuinfon in human-read-able format:
# lscpu
Sample outputs:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) per core:    1
Core(s) per socket:    4
CPU socket(s):         2
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 15
Stepping:              7
CPU MHz:               1866.669
BogoMIPS:              3732.83
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              4096K
NUMA node0 CPU(s):     0-7


The /proc/cpuinfo and sysfs stores info about your CPU architecture ike number of CPUs, threads, cores, sockets, NUMA nodes, information about CPU caches, CPU family, model, bogoMIPS, yte order and much more:
# less /proc/cpuinfo

Check out related media

Here is a quick demo of lscpu and /proc/cpuinfo commands:

Share this tutorial on:

Like this? Follow us on Twitter OR support us by using Patreon

{ 19 comments… add one }
  • Hardly Wired August 13, 2012, 12:14 am

    Useful! You can also press ‘1’ when you run ‘top’ to get core info.

    • silencej June 5, 2013, 2:22 am

      Good one, thanks!

    • Junaid December 4, 2014, 5:05 am

      It was a good info.

    • Bruno August 7, 2015, 8:11 am

      Awesome. Thank you, that’s gonna help.

  • my2cents August 13, 2012, 2:03 am

    Great but… there is a but… You didn’t said that “lscpu” and “nproc” are only available on Debian like Linux !
    On one on my Ubuntu VM :

    root@wiki2:~# lscpu
    Architecture:          x86_64
    CPU op-mode(s):        32-bit, 64-bit
    Byte Order:            Little Endian
    CPU(s):                1
    On-line CPU(s) list:   0
    Thread(s) per core:    1
    Core(s) per socket:    1
    CPU socket(s):         1
    NUMA node(s):          1
    Vendor ID:             GenuineIntel
    CPU family:            6
    Model:                 15
    Stepping:              11
    CPU MHz:               2405.424
    BogoMIPS:              4810.84
    L1d cache:             32K
    L1i cache:             32K
    L2 cache:              4096K
    NUMA node0 CPU(s):     0
    root@wiki2:~# nproc

    On a Redhat Linux :
    lscup could be a simple ‘cat /proc/cpuinfo’ as there is no substitute !

    [root@web3 ~]# cat /proc/cpuinfo
    processor       : 0
    vendor_id       : GenuineIntel
    cpu family      : 6
    model           : 15
    model name      : Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz
    stepping        : 11
    cpu MHz         : 2405.424
    cache size      : 4096 KB
    fpu             : yes
    fpu_exception   : yes
    cpuid level     : 10
    wp              : yes
    flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx lm constant_tsc arch_perfmon pebs bts tsc_reliable aperfmperf unfair_spinlock pni ssse3 cx16 hypervisor lahf_lm dts
    bogomips        : 4810.84
    clflush size    : 64
    cache_alignment : 64
    address sizes   : 40 bits physical, 48 bits virtual
    power management:

    and nproc as :

    [root@web3 ~]# grep -c processor /proc/cpuinfo

    ET voila !

    • Rajesh January 18, 2017, 7:04 am

      Thank you my2cents… it was really very helpfull

  • Pierre B. August 13, 2012, 8:18 am

    Just to add more one-liners , for RHEl box that do not come with nproc command:

    # Count the number of “physical processor(s)”
    grep "physical id" /proc/cpuinfo | sort -u | wc -l
    # Count the number of “physical cores per CPU”
    grep "cpu cores" /proc/cpuinfo |sort -u |cut -d":" -f2
    # Count the number of “logical cores ” (including multi-threading cores)
    grep -c "processor" /proc/cpuinfo
    • D March 26, 2013, 7:18 pm

      Thanks Pierre, this was extremely helpful :) !!!!!

    • mrpurple September 1, 2015, 9:10 pm

      Awesome. Here’s another based on yours
      # Count the total number of “physical cores”
      grep "cpu cores" /proc/cpuinfo |sort -u |cut -d":" -f2 | awk '{s+=$1} END {print s}'

  • Sam August 13, 2012, 11:01 am

    To find the number of cpu cores,

    cat /proc/cpuinfo| grep processor| wc -l

  • Pierre B. August 14, 2012, 7:52 am

    @ Sam :

    useless use of “| wc -l” : the -c option for grep would do the same …

    • ugogu October 2, 2015, 1:03 pm

      …and useless use of “cat”. Grep does it all:
      grep -c processor /proc/cpuinfo

  • Bob Pelerson December 19, 2012, 10:45 pm

    On FreeBSD dmesg |grep package
    produces something like
    2 package(s) x 6 core(s) x 2 SMT threads

  • nikhil c r February 17, 2014, 10:46 am

    thanks all of u…..

  • James August 30, 2014, 3:09 am

    As I understand it, the Intel Core i7 has four physical cores, expanded to eight by hyperthreading. So, readers should be aware that if they want to know the number of *physical* cores (without considering hyperthreading), these commands will not help.

  • Gabriel November 3, 2014, 6:19 pm

    back to old days , simply cat /proc/acpi/processor | wc -l did the trick
    Now on debian derivates like Mint or *buntu nproc does the job
    For bash scripting , can be implemented a loop to enumerate all posibilities (rhell , debian , gentoo .. so forth ), if any enumerated functions is different than null , then break loop and pass info to variable
    It is usefull for pseudo parallel bash scripting when task has to be split into CPU core number.

  • Krapace October 19, 2015, 11:39 am

    And for GNU/Hurd ? i can’t find information :(

  • hani March 23, 2016, 5:57 am

    Thank you!

  • Richard Lloyd April 2, 2016, 10:07 am

    Although “grep -c processor /proc/cpuinfo” seems the best solution (utilities like nproc and lscpu are often not installed), it has a fatal flaw. It should be anchored to look at the start of the line for the “processor” string:

    grep -c ^processor /proc/cpuinfo

    This is because other lines of /proc/cpuinfo can contain “processor” – for example, a KVM-based VM has this:

    model name : Common KVM processor

    which will cause the original grep to double up the core count – whoops!

Security: Are you a robot or human?

Leave a Comment

You can use these HTML tags and attributes: <strong> <em> <pre> <code> <a href="" title="">

   Tagged with: , , , , , , , , , , , , , , , ,