back to top

Monitorare i processi: i comandi ps e top – Guida Linux

Linux offre ampia possibilità di gestione dei processi in esecuzione. Abbiamo già visto come mandare un processo in esecuzione "dietro le quinte", come stoppare un processo e come spostarlo da background a foreground. In questa lezione proseguiamo nel nostro percorso alla scoperta di come monitorare i processi nel nostro sistema opertivo attraverso l’analisi dei comandi ps e top.

Il comando ps

Al fine di monitorare i processi in esecuzione sul sistema è possibile far ricorso al comando ps.

Il comando da Shell noto come ps (process state), ci mostra lo stato dei processi in corso all’interno del sistema; in pratica, lanciando il comando ps viene visualizzata una lista dei processi correnti; vediamo un possibile output di ps:

$ ps
PID   TT TIME CMD
19480 00 0:00 ps

ps specificato senza ulteriori opzioni ci restituisce l’elenco sintetico dei processi appartenenti all’utente e controllati mediante il terminale in uso. Potremo in ogni caso utilizzare gli argomenti ax e aux per ottenere una lista più completa:

  • ax mostra i processi relativi a tutti gli utenti (-a) ed anche non controllati dl terminale (-x);
  • aux identico ad ax ma permette di visualizzare anche le user (-u) degli utenti a cui appartengono i processi in esecuzione.

Il risultato dell’istruzione può essere particolarmente lungo, in questo caso potremo utilizzare less e more per impaginare l’output prodotto:

ps aux | less

Se invece vogliamo sapere se un determinato processo è in esecuzione senza dover scorrere tutta la lista, possiamo utilizzare grep in questo modo:

ps ax | grep mysql

Si noti come si sia fatto ricorso al carattere pipe per indirizzare lo stdout di ps verso il comando grep.

Elenco dei processi che consumano più CPU

La vostra installazione di Linux è lenta? Forse il vostro computer è semplicemente affaticato da alcuni processi troppo pesanti in termini di risorse richieste al sistema. Solitamente ciò accade quando ci sono in esecuzione dei processi che affaticano la CPU o consumano grandi quanità di RAM.

Per scoprire quali sono le applicazioni che stanno mettendo a dura prova la nostra CPU, possiamo utilizzare da riga di comando un’istruzione simile alla seguente:

ps -eo pcpu,pid,args | sort -k 1 -r | head -5

Nel caso specifico il terminale permetterà di visualizzare i 5 processi più impegnativi per il processore, notate infatti il valore "5" alla fine dell’istruzione, questo numero è definibile arbitrariamente dall’utilizzatore, per cui, se desiderate creare liste più lunghe o più corte, potete farlo agendo su di esso.

Elenco dei processi che occupano più RAM

Vediamo una istruzione similare per elencare i processi che stanno occupando maggiormente la memoria RAM del sistema:

ps -eo pid,vsz,comm | sort -n -k 2 | head -5

Come detto nel paragrafo precedente, l’elenco è volutamente limitato a 5 ma nulla vieta di estenderlo o ridurlo a piacimento.

Il comando top

ps produce un’immagine statica dei processi in corso, in pratica fotografa lo stato del sistema al momento in cui viene lanciata l’istruzione di monitoraggio delle esecuzioni.

Se si desidera ottenere un output più particolareggiato, dinamico e aggiornabile sarà necessario utilizzare il comando top; l’output di top consente di visualizzare tutti processi correnti e le relative informazioni rilevanti come per esempio il carico sulla CPU.

A corredo di top abbiamo una serie di utili opzioni introducibili semplicemente premendo sulla voce corrispondente nella tastiera:

  • k: ferma un processo
  • n: mostra il numero dei processi visualizzati sulla base di una cifra specificata dall’utente
  • u: ordina l’elenco dei processi per utente
  • P: ordina l’elenco dei processi per quantità di CPU utilizzata
  • M: ordina l’elenco dei processi per quantità di memoria impiegata
  • Barra spaziatrice: aggiorna l’elenco dei processi
  • q: esce da top
Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).