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