Controllare la CPU in Linux: nproc, lscpu e info su RAM, disco e sistema operativo
In Linux controlli il numero di CPU con una riga di nproc, e con lscpu vedi se quel numero conta socket, core o thread. Confrontando nproc, lscpu e /proc/cpuinfo su un server AlmaLinux 9, i tre comandi hanno mostrato lo stesso numero di CPU logiche con nomi diversi, come CPU(s) e processor. Anche RAM, disco e versione del sistema operativo sono stati controllati sullo stesso server con free, df, lsblk e uname.
Il modello della CPU, il numero di core, le dimensioni di memoria e disco e la versione del kernel negli output qui sotto sono valori di esempio. Cosa mostra ogni comando è riassunto prima in una tabella.
| Comando | Cosa mostra |
|---|---|
| nproc | Numero di CPU utilizzabili (core logici) |
| lscpu | Modello CPU, socket, core, thread |
| free -h | RAM totale, usata e libera |
| df -h | Uso del disco per file system |
| lsblk | Struttura di dischi e partizioni |
| cat /etc/os-release | Nome e versione della distribuzione |
| uname -r | Versione del kernel |
1️⃣ Controllare la CPU in Linux: nproc e lscpu
CPU(s) in lscpu è il numero di CPU logiche usate dal sistema operativo, mentre il numero di core fisici si legge a parte nella riga Core(s) per socket. CPU(s) si calcola come socket × core per socket × thread per core.
Se ti serve solo il numero di CPU logiche, basta una riga di nproc.
nproc4Secondo il manuale di nproc, questo valore è il numero di unità di elaborazione disponibili per il processo corrente, quindi negli ambienti che limitano l'uso della CPU può risultare inferiore al numero di processori online.
Da dove viene questo 4 si vede all'inizio dell'output di lscpu.
lscpu | head -n 15Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 46 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Vendor ID: GenuineIntel
BIOS Vendor ID: Intel(R) Corporation
Model name: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz
BIOS Model name: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz
CPU family: 6
Model: 85
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1Moltiplicando Socket(s) 1, Core(s) per socket 2 e Thread(s) per core 2 si ottiene il 4 di CPU(s). Lo 0-3 in On-line CPU(s) list indica i numeri di CPU logica assegnati dal sistema operativo.
Anche la vCPU nel listino prezzi di AWS EC2 è questa unità di CPU logica. Secondo la documentazione ufficiale, EC2 conta un thread di un core della CPU come una vCPU. Un'istanza con 2 core e 2 thread per core ha 4 vCPU, la stessa struttura dell'output di lscpu qui sopra.
L'opzione -e mostra in una tabella a quale core appartiene ciascuna delle quattro CPU logiche.
lscpu -eCPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE
0 0 0 0 0:0:0:0 yes
1 0 0 1 1:1:1:0 yes
2 0 0 0 0:0:0:0 yes
3 0 0 1 1:1:1:0 yesLe CPU 0 e 2 condividono il CORE 0, e le CPU 1 e 3 condividono il CORE 1. Questa struttura, con due CPU logiche su un core, è l'hyper-threading (SMT). Nel diagramma qui sotto puoi premere i pulsanti dei comandi per confrontare con quali nomi ciascuno dei tre comandi mostra questa struttura.
2️⃣ Info sulla CPU in Linux: /proc/cpuinfo
L'origine dei numeri che lscpu riassume è il file /proc/cpuinfo. Il kernel scrive un blocco per ogni CPU logica, quindi su un server con CPU(s) 4 lo stesso blocco si ripete quattro volte di seguito.
Il comando cat mostra l'intero file con tutti e quattro i blocchi, mentre tagliandolo con head come qui sotto compare solo il primo blocco.
head -n 27 /proc/cpuinfoprocessor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 85
model name : Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz
stepping : 4
microcode : 0x2007006
cpu MHz : 2394.374
cache size : 28160 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault pti fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves ida arat pku ospke
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit mmio_stale_data retbleed gds bhi spectre_v2_user its
bogomips : 4788.74
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:Questi sono i dieci campi che guarderai più spesso.
Contando le righe processor ottieni il numero di CPU, e confrontando siblings con cpu cores vedi se l'hyper-threading è attivo.
grep -c processor /proc/cpuinfo4grep -E 'siblings|cpu cores' /proc/cpuinfo | sort -ucpu cores : 2
siblings : 4Ci sono 4 righe processor, siblings è 4 e cpu cores è 2, quindi ogni core esegue due thread. Lo stesso è stato confermato anche con il valore che il kernel scrive in /sys.
cat /sys/devices/system/cpu/smt/active1Secondo la documentazione del kernel, 1 significa che l'SMT è attivo e le CPU sorelle sono online. Se è disattivato, compare 0.
Se ti serve solo il nome del modello di CPU, raccogli le righe model name.
grep 'model name' /proc/cpuinfo | uniq -c 4 model name : Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHzIl 4 iniziale indica che la stessa riga è comparsa quattro volte, quindi in una riga vedi il nome del modello e anche il numero di CPU logiche.
3️⃣ Controllare la RAM in Linux: free e /proc/meminfo
La dimensione della RAM si controlla con il comando free. Con l'opzione -h i valori compaiono in unità Gi e Mi.
free -h total used free shared buff/cache available
Mem: 7.7Gi 4.1Gi 775Mi 112Mi 2.8Gi 3.3Gi
Swap: 2.0Gi 640Mi 1.4GiLa memoria libera si legge nella colonna available. Anche se la colonna free è piccola, Linux riempie la memoria inutilizzata con la cache dei file (buff/cache) e la libera appena un programma ne ha bisogno.
Come nell'output qui sopra, la colonna free può mostrare 775Mi mentre available è 3.3Gi. Secondo il manuale di free, available è una stima della memoria disponibile per avviare nuovi programmi senza swap.
Per i calcoli negli script l'opzione giusta è -m. Mostra numeri interi in MiB.
free -m total used free shared buff/cache available
Mem: 7867 4219 775 112 2873 3400
Swap: 2047 640 1407L'origine che free legge è /proc/meminfo. Le prime cinque righe corrispondono a total, free, available e buff/cache di free, e l'unità è kB.
head -n 5 /proc/meminfoMemTotal: 8055808 kB
MemFree: 793600 kB
MemAvailable: 3481600 kB
Buffers: 32 kB
Cached: 2856960 kBDividendo MemTotal 8055808 kB per 1024 si ottiene lo stesso valore di 7867 in free -m.
4️⃣ Controllare lo spazio su disco in Linux: df e lsblk
Comando df mostra dimensione e uso dei file system montati, quindi non va bene per dischi non montati o per vedere la struttura delle partizioni. In quel caso usa lsblk.
df -h -x squashfsFilesystem Size Used Avail Use% Mounted on
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 1.6G 154M 1.5G 10% /run
efivarfs 128K 3.8K 120K 4% /sys/firmware/efi/efivars
/dev/nvme0n1p4 79G 10G 69G 13% /
/dev/nvme0n1p3 960M 269M 692M 28% /boot
/dev/nvme0n1p2 200M 7.7M 193M 4% /boot/efi
tmpfs 787M 8.0K 787M 1% /run/user/0-x squashfs è l'opzione che toglie dall'elenco i file system loop che i pacchetti snap montano in sola lettura. Il file system root (/) usa 10G su 79G, cioè il 13%, e devtmpfs e tmpfs sono file system creati in memoria, quindi si escludono dal calcolo dello spazio su disco.
Per vedere anche il tipo di file system aggiungi -T; se indichi un percorso, compare solo la riga del file system a cui appartiene quel percorso.
df -hT /Filesystem Type Size Used Avail Use% Mounted on
/dev/nvme0n1p4 xfs 79G 10G 69G 13% /La root era xfs. Come sono divisi disco e partizioni lo vedi con lsblk. Con -e 7 spariscono i dispositivi loop come snap e restano solo i dischi reali.
lsblk -e 7NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 80G 0 disk
├─nvme0n1p1 259:1 0 1M 0 part
├─nvme0n1p2 259:2 0 200M 0 part /boot/efi
├─nvme0n1p3 259:3 0 1G 0 part /boot
└─nvme0n1p4 259:4 0 78.8G 0 part /Un disco, nvme0n1, è diviso in quattro partizioni, e di queste nvme0n1p4 è montata sulla root e corrisponde alla riga da 79G di df.
5️⃣ Controllare versione del sistema operativo e kernel in Linux: os-release e uname
Dopo aver letto i numeri di CPU, memoria e disco, controlla anche su quale distribuzione e kernel gira il server. Nome della distribuzione, versione e data di fine supporto sono tutti in un unico file, /etc/os-release.
cat /etc/os-releaseNAME="AlmaLinux"
VERSION="9.8 (Olive Jaguar)"
ID="almalinux"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.8"
PLATFORM_ID="platform:el9"
PRETTY_NAME="AlmaLinux 9.8 (Olive Jaguar)"
ANSI_COLOR="0;34"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:almalinux:almalinux:9::baseos"
HOME_URL="https://almalinux.org/"
DOCUMENTATION_URL="https://wiki.almalinux.org/"
BUG_REPORT_URL="https://bugs.almalinux.org/"
ALMALINUX_MANTISBT_PROJECT="AlmaLinux-9"
ALMALINUX_MANTISBT_PROJECT_VERSION="9.8"
REDHAT_SUPPORT_PRODUCT="AlmaLinux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.8"
SUPPORT_END=2032-06-01La riga PRETTY_NAME è il nome leggibile, e VERSION_ID è il numero di versione che gli script confrontano. Con la riga SUPPORT_END è stata controllata anche la data di fine supporto.
Nei sistemi basati su RHEL, anche /etc/redhat-release mostra la stessa versione in una riga.
cat /etc/redhat-releaseAlmaLinux release 9.8 (Olive Jaguar)Versione del kernel: uname -r la mostra in una riga.
uname -r5.14.0-687.10.1.el9_8.x86_64uname -aLinux server 5.14.0-687.10.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Jun 2 10:15:42 EDT 2026 x86_64 x86_64 x86_64 GNU/LinuxCon -a compaiono su una riga nome del kernel, nome host, versione del kernel, data di build e architettura. Tra questi, x86_64 è l'architettura della CPU, lo stesso valore della riga Architecture di lscpu.
🔲 Simulatore per controllare la CPU in Linux
Nel simulatore qui sotto puoi digitare tu stesso nproc, lscpu, free, df, lsblk e uname e vedere l'output. I valori sono gli stessi valori di esempio del testo.
🔢 FAQ & contenuti consigliati
Linux · Info di sistema
Comando uptime di Linux
Comando che mostra in una riga il tempo di attività del server e il carico medio a 1, 5 e 15 minuti.
Linux · Carico
Cos'è il Load Average in Linux?
Come leggere il carico medio a 1, 5 e 15 minuti mostrato da top e uptime rispetto al numero di core.
Linux · Memoria
Configurare la memoria swap
Due modi per trasformare spazio su disco in memoria swap nel caso la RAM non basti.
ℹ️ Informativa sull'affiliazione
I contenuti di questo sito includono link di affiliazione. Se un visitatore acquista un prodotto o un servizio tramite uno di questi link, il sito riceve una commissione dal venditore. In questo processo l'importo pagato dall'acquirente (durante le promozioni l'importo scende↓) non aumenta. Prezzi, sconti e disponibilità indicati si riferiscono al momento della stesura e possono differire da quelli reali: prima di acquistare verifica sempre presso il venditore. I prodotti vengono scelti e valutati secondo criteri propri, e le commissioni non influiscono sull'ordine di presentazione né sul contenuto delle valutazioni.