info@studio56.it
STUDIO56

Monitorare il sistema da riga di comando

Monitorare le risorse di un sistema è un’attività importante per comprendere cosa sta accadendo al suo interno; se è vero che un controllo non fa mai male, avere informazioni dettagliate e rapidamente comprensibili si rivela ancora più importante quando si verifica una situazione anomala.

Nei sistemi desktop siamo abituati ad utilizzare i monitor delle risorse integrati nel sistema operativo, che mostrano in una finestra dedicata le risorse in uso dal sistema ed i processi in esecuzione, con la possibilità di terminare quelli che desideriamo qualora non si stiano comportando come ci si attende.

Monitor di sistema Monitor di sistema con interfaccia grafica

Lavorando con i server però, nella maggior parte dei casi avremo un sistema Linux headless, ovvero non dotato di monitor o periferiche come mouse e tastiera e che è accessibile tipicamente tramite una connessione di rete via SSH.

Nel seguito dell’articolo vedremo cinque alternative per monitorare le risorse di una macchina Linux (indipendentemente dal fatto che sia un server o una macchina desktop) disponibili tramite riga di comando.

top

Il primo comando, presente in qualsiasi distribuzione Linux, è top: seppur completo, rappresenta il più semplice degli strumenti che andremo a vedere in questo articolo.

L’aspetto della finestra dopo aver lanciato il comando top è essenziale e mostra nelle prime righe - prima dell’inizio della tabella dei processi - un insieme sintetico di informazioni sull’uso delle risorse globali del sistema come il numero dei task in esecuzione, la percentuale totale di CPU in uso, le statistiche totali sulla memoria e sullo swap del sistema.

top Output del comando top

Subito dopo le informazioni globali è riportata la tabella dei processi in esecuzione, per ognuno dei quali è possibile vedere un insieme di informazioni caratterizzanti tra cui il suo PID (process ID), l’utente che ha avviato il processo, le percentuali di CPU e di memoria utilizzate dal processo ed il nome del comando associato.

Dopo aver lanciato il comando top è possibile cambiare la colonna rispetto alla quale ordinare i dati con i tasti < e > ma nella versione monocromatica di top è decisamente difficile comprendere quale sia la colonna sulla quale si sta effettuando l’ordinamento, specialmente dopo averla aggiornata più volte.

Un metodo comodo per visualizzarla è quello di attivare la visualizzazione a colori (premendo il tasto z) e successivamente attivare l’evidenziazione della colonna di ordinamento premendo il tasto x.

top con opzioni z e x top con opzioni z e x

Infine, se si desidera interrompere un processo in esecuzione è possibile premere il tasto k (per kill) che richiederà il PID del processo da terminare.

htop

htop è una versione potenziata del comando top e presenta le stesse informazioni del comando precedente, integrate da una visualizzazione a grafici delle risorse e colori abilitati di default.

htop non è presente inizialmente all’interno delle distribuzioni Linux, pertanto sarà necessario installarlo tramite il package manager della distribuzione in uso.

htop Output del comando htop

In questo caso, prima della tabella dei processi, le informazioni sulle risorse globali in uso sono mostrate tramite indicatori a barre che mostrano il carico di lavoro dei singoli core del processore, dell’utilizzo di RAM e di swap, con una codifica a colori facilmente comprensibile in cui le barre diventano sempre più rosse man mano che ci si sta avvicinando al termine delle risorse disponibili.

Subito sotto alle risorse globali troviamo il consueto elenco dei processi in esecuzione e nell’ultima riga troviamo un suggerimento su alcuni tasti che possono essere utilizzati per attivare funzioni o visualizzazioni differenti dei dati proposti (un secondo vantaggio rispetto all’uso di top).

Una prima opzione utile ci viene suggerita proprio da questa ultima riga di comandi: premendo F5 infatti sarà possibile mostrare l’elenco di processi in esecuzione tramite una visualizzazione ad albero (tree), in modo da comprendere - ad esempio - cosa accade a cascata nel momento in cui effettuiamo un kill di un processo.

htop con visualizzazione ad albero htop con visualizzazione ad albero

Anche il tasto per terminare un processo viene suggerito (a differenza di top dove “dovevamo sapere” che si effettua tramite il tasto k) nell’ultima riga del programma e corrisponde al tasto F9: questa volta non avremo semplicemente la richiesta di inserire il PID del processo da terminare.

Sarà infatti possibile prima selezionare con i tasti freccia il processo che si intende terminare, premere F9 e scegliere dal menu a comparsa sulla sinistra dello schermo il tipo di segnale da utilizzare associato al comando kill, come mostrato nella seguente immagine:

htop: terminare i processi htop: terminare i processi

glances

Con glances torniamo ad un monitor di sistema senza grafici di utilizzo, ma con una semplice codifica a colori per mostrare a colpo d’occhio (in inglese glance) i carichi di uso delle principali risorse.

Anche in questo caso non si tratta di un software presente di default nelle principali distribuzioni Linux, pertanto sarà necessario installarlo tramite il gestore di pacchetti.

Come i due software precedenti, le prime righe mostrate si riferiscono al carico globale del sistema in tempo reale: una prima differenza visibile rispetto ad htop (oltre alla mancanza dei grafici) è la presenza di statistiche relative anche alla rete, all’uso del disco e all’utilizzo del filesystem (anche in questo caso, usando una codifica a colori per indicarne lo stato) ed un’ultima riga in cui vengono mostrati degli avvisi relativi all’eventuale avvicinarsi del termine delle risorse.

glances Output del comando glances

In questo caso, come accadeva anche con top, non abbiamo una lista di suggerimenti sui tasti da utilizzare per poter interagire con il programma al fine di cambiare la risorsa su cui ordinare i processi o per poter terminare un processo ed è necessario far ricorso alla pagina del manuale (man glances) per scoprire quali operazioni sono possibili ed i corrispondenti tasti per attivarle, compreso l’uso del tasto h per mostrare l’elenco dei comandi disponibili una volta lanciato il programma.

In questo modo è possibile scoprire - ad esempio - che premendo il tasto 1 è possibile passare dalla visualizzazione complessiva dell’uso della CPU alla visualizzazione per core oppure che con c ed m è possibile ordinare i processi per uso di CPU e di memoria.

glances: dettaglio di uso dei singoli core glances: dettaglio di uso dei singoli core

glances: visualizzazione a barre glances: visualizzazione a barre

Da notare che a differenza dei precedenti programmi, non è presente un comando per terminare i processi, rendendo questo software di fatto un semplice visualizzatore di risorse.

Due note a sfavore di glances sono l’elevato uso di CPU, che in tutti i test effettuati (PC desktop, notebook e macchina virtuale, ognuno con una differente distribuzione di Linux) si attesta attorno al 10% di uso di un singolo core e l’assenza di un comando per terminare un processo direttamente dentro il programma, cosa che costringe l’utente ad uscire, eseguire il comando per terminare un processo e riavviare glances.

Verificando nel repository GitHub del progetto è possibile trovare una issue aperta relativa proprio a questa mancanza e sembra che l’opzione sia stata inserita all’interno di una milestone successiva e che quindi in futuro questa possibilità sarà presente.

bashtop

bashtop è un software più avanzato rispetto ai precedenti e anche in questo caso non presente di default nelle varie distribuzioni Linux, pertanto andrà installato tramite il gestore dei pacchetti e - qualora il repository non lo contenga - sarà possibile installarlo seguendo le istruzioni all’interno del repository GitHub del progetto.

A differenza degli strumenti visti fino ad ora, in questo caso abbiamo dei pre requisiti da soddisfare per poter installare e utilizzare con successo bashtop, ovvero la versione minima di bash (almeno 2.4), un locale che supporti UTF-8 e un font che mostri correttamente alcuni particolari caratteri Unicode (indicati nella pagina dei pre requisiti) per un corretto display dell’interfaccia e dei grafici.

Dopo aver lanciato il comando vedremo apparire subito una interfaccia più curata dei precedenti software, con una prima parte in alto dedicata all’uso della CPU (divisa per core) sia sotto forma di tabella di valori, sia sotto forma di grafico temporale di utilizzo.

bashtop Output del comando bashtop

Sul lato sinistro della UI sono presenti due box che mostrano rispettivamente l’uso di memoria e disco (il primo) e della rete (il secondo): anche in questo caso, oltre i valori numerici sono presenti anche grafici a barre colorate che permettono di comprendere in maniera rapida l’uso delle risorse della macchina.

Nel lato destro è presente la consueta lista dei processi attivi, ordinati di default per utilizzo di CPU, ma che vedremo sarà possibile configurare per mostrare fin dall’inizio una differente visualizzazione.

Come per htop, anche bashtop fornisce dei suggerimenti utili sui tasti funzione da utilizzare per modificare la visualizzazione dei dati, questa volta sotto forma di una lettera evidenziata con un differente colore all’interno di tutte quelle proprietà dell’interfaccia che sono modificabili.

Premendo il tasto e (evidenziato nella parola tree nel box dei processi) - ad esempio - è possibile passare alla visualizzazione ad albero dei processi (come visto anche in htop):

bashtop: visualizzazione ad albero bashtop: visualizzazione ad albero

mentre premendo i tasti freccia e è possibile variare la colonna su cui ordinare i processi, ad esempio passando dall’uso della CPU a quello della memoria:

bashtop: visualizzazione ad albero ordinato per memoria bashtop: visualizzazione ad albero ordinato per memoria

Premendo invece il tasto invio dopo aver evidenziato (tramite i tasti freccia e ) un processo sarà possibile vederne tutti i dettagli, compreso un grafico aggiuntivo con la serie temporale dell’uso della CPU effettuato dal processo.

bashtop: dettagli processo bashtop: dettagli processo

Per terminare il processo evidenziato si hanno a disposizione tre possibilità: il tasto t (che invia il segnale SIGTERM - 15), il tasto k (che invia il segnale SIGKILL -9) o il tasto i (che invia il segnale SIGINT - 2).

Fino ad ora, ad eccezione della visualizzazione grafica dei dati, questo software non si discosta molto da quelli già visti in precedenza; le differenze iniziano infatti quando si preme il tasto m (oppure il tasto Esc), che farà apparire il menu di configurazione di bashtop: dal menu principale potremo configurare varie opzioni del software, come il tempo di aggiornamento delle informazioni mostrate a schermo, il tipo di ordinamento dei processi, il formato dell’ora mostrata nell’interfaccia o il tema grafico da utilizzare.

bashtop: menu opzioni bashtop: menu opzioni

Per quanto quest’ultima opzione sia totalmente ininfluente sulla visualizzazione dei dati, è comunque un punto a favore di questo software rispetto a quelli visti in precedenza, che non permettevano una tale configurazione.

bashtop: tema dark bashtop: tema dark

bashtop: tema monokai bashtop: tema monokai

bpytop

bpytop è il porting di bashtop in Python ed è la versione consigliata anche dallo stesso sviluppatore di bashtop.

L’interfaccia che mostra i dati e i principali comandi da utilizzare per variare la visualizzazione dei dati sono identici a quelli di bashtop mentre le opzioni disponibili sono leggermente maggiori di quelle del software da cui deriva.

bpytop Output del comando bpytop

Abbiamo ad esempio un Minimode per ridurre le dimensioni dell’interfaccia, la possibilità di ordinare i processi in senso inverso, la visualizzazione di processi per singolo core oppure la possibilità di non impostare un colore di sfondo del tema (per rendere trasparente la finestra qualora sia usato in un desktop manager e non in un sistema a sola riga di comando).

Anche in questo caso sono presenti i temi grafici personalizzabili, per mostrare i dati del sistema con la combinazione di colori che più preferite (compresa una non particolarmente gradita dai programmatori modalità a colori chiari).

bpytop: menu opzioni bpytop: menu opzioni

Anche bpytop, così come bashtop, non è esente da qualche piccolo bug grafico che in alcuni casi - ad esempio dopo il ridimensionamento quando usato all’interno di un desktop manager - genera la sovrapposizione o lo spostamento di alcuni elementi grafici dell’interfaccia, come mostrato nell’immagine seguente:

bpytop: qualche bug nella UI bpytop: qualche bug nella UI

Nonostante queste piccole imperfezioni, rimane un software efficace nel mostrare le risorse utilizzate dal sistema in un modo che si rivela semplice ed intuitivo da comprendere e permette una personalizzazione elevata che top, htop e glances non mettono a disposizione.

Visione di insieme di tutti i software Visione di insieme di tutti i software

Categoria articolo