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.
Indice
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