Conoscere il comando Top di Linux

Posted by RedBlue on June 12, 2020 · 4 mins read

Il comando Top di Linux serve a monitorare in tempo reale lo stato dei processi di sistema.

Può essere utile a scoprire cosa sta impegnando severamente la CPU oppure cosa c'è nella RAM (magari un processo "cresciuto" troppo). Si tratta di un comando estremamente comodo e di semplice interpretazione, installato di default in gran parte delle distribuzioni Linux più comuni.

Per lanciarlo, semplicemente scriviamo:

top



Otterremo una schermata come questa:

comando-top-linux

Cerchiamo ora di capire cosa ci racconta il comando Top.

Nella prima riga, che inizia con top, troviamo:

  • ora attuale
  • uptime della macchina, cioè il tempo trascorso dall'avvio del sistema
  • utenti connessi
  • load average, ovvero il carico medio del sistema rispettivamente nell’ultimo minuto, negli ultimi 5 minuti, nelll’ultimo quarto d’ora. Valori intorno a 1 non sono preoccupanti, valori maggiori di 1 indicano che un processo per essere eseguito deve attendere. L'attesa sarà maggiore tanto più risulta maggiore questo valore.

Nella seconda riga, che inizia con Tasks, troviamo:

  • processi in esecuzione
  • processi attivi
  • processi in sleeping
  • processi stoppati
  • processi zombie, cioè processi avviati da un processo padre che attendono di essere fermati da quest'ultimo

Nella terza riga, che inizia con CPU, troviamo:

  • carico dei processi utente
  • carico dei processi di sistema
  • carico dei processi con priorità di aggiornamento nice
  • percentuale di inattività della cpu
  • percentuale dei processi in attesa di operazioni I/O
  • percentuale della CPU per interrupt hardware
  • percentuale della CPU per interrupt software
  • "quantità" di CPU usata da (eventuali) macchine virtuali

Ad esempio nel mio caso vediamo che i processi utente occupano l'1,8% della CPU, mentre i processi di sistema lo 0,5%.

Nella quarta e quinta riga troviamo le informazioni relative alla memoria RAM e all'area di SWAP.

Infine, abbiamo l'elenco di tutti i processi in esecuzione, ognuno corredato da una serie di informazioni utili a capire lo stato del processo stesso e il suo impatto sul sistema:

  • PID – ID del processo
  • USER – utente proprietario del processo
  • PR – priorità in cui il processo è stato lanciato
  • NI – valore rappresentante il valore “NICE”
  • VIRT – memoria virtuale utilizzata dal processo
  • RES – memoria fisica utilizzata dal processo
  • SHR – memoria condivisa dal processo 
  • S – stato del processo: S=sleep R=esecuzione Z=zombie
  • %CPU – percentuale del processo sul carico sulla cpu
  • %MEM – percentuale del processo sul carico della RAM
  • TIME+ – tempo di attività del processo
  • COMMAND – nome del processo

Possiamo anche manipolare le informazioni visualizzate dal comando Top, usando le seguenti opzioni:

M – ordina sulla base della memoria in uso
P – ordina sulla base della CPU in uso
T – ordina sulla base del tempo complessivo
z – cambia colore
k – chiude un processo
q – esce dal comando Top

Ad esempio per killare un processo con ad esempio PID 1234, basta premere la lettera k e inserire 1234 come PID.

Attenzione perchè le opzioni appena viste rispettano maiuscole e minuscole.

Esiste anche una versione più evoluta del comando Top, il comando HTop, che spesso però non è presente di default. Mi riservo di parlarne in futuro in un post apposito.

Alla prossima..