Introduzione
Quando si lavora su una macchina Linux, a volte potrebbe essere necessario scoprire quali processi sono attualmente in esecuzione. Esistono numerosi comandi che è possibile utilizzare per trovare informazioni sui processi in esecuzione, con ps
e top
essere i più utilizzati.
In questo articolo, parleremo del comando pstree
. È simile ps
, ma invece di elencare i processi in esecuzione, li mostra in un albero. Il formato ad albero è un modo più conveniente per visualizzare la gerarchia dei processi e rende l'output più visivamente accattivante.
Se desideri usare il comando Pstree su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.
Connessione al Server
Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:
ssh root@IP_DEL_SERVER
Successivamente sarà necessario inserire la password dell'utente root.
Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:
ssh nome_utente@IP_DEL_SERVER
Successivamente vi verrà chiesto di inserire la password del vostro utente.
La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Come usare il comando pstree
La sintassi generale per il comando pstree
è la seguente:
ps [OPTIONS] [USER or PID]
Nella sua forma più semplice quando viene invocato senza alcuna opzione o argomento, pstree
visualizza una struttura ad albero gerarchica di tutti i processi in esecuzione.
Sulle distribuzioni Debian e derivate dovrebbe già essere installato di default, altrimenti eseguire questo comando:
sudo apt-get install psmisc
Per installarlo su CentOS/RHEL dare il seguente comando:
sudo yum install psmisc
Per utilizzare il comando senza nessuna opzione, digitare semplicemente pstree
:
pstree
systemd─┬─VBoxService───7*[{VBoxService}]
├─accounts-daemon───2*[{accounts-daemon}]
├─2*[agetty]
├─atd
├─cron
├─dbus-daemon
├─irqbalance───{irqbalance}
├─2*[iscsid]
├─lvmetad
├─lxcfs───2*[{lxcfs}]
├─networkd-dispat───{networkd-dispat}
├─nginx───2*[nginx]
...
L'elemento top/root nella struttura è il processo principale di tutti i processi di sistema. In questo esempio, ovvero systemd
, è il primo processo che si avvia all'avvio.
pstree
unisce rami identici mettendoli tra parentesi quadre e prefissandoli con un numero intero che rappresenta il numero di rami. Ciò rende l'output più leggibile e visivamente accattivante.
Di seguito è riportato un esempio che mostra come vengono utilizzate le parentesi quadre:
├─2*[agetty]
è uguale a:
├─agetty
├─agetty
Per disabilitare l'unione dei rami identici, utilizzare l'opzione -c
:
pstree -c
I thread di un processo sono mostrati sotto il processo genitore e visualizzati usando il nome del processo tra parentesi graffe. Ecco un esempio:
├─lxcfs───2*[{lxcfs}]
Utilizzare l'opzione -t
per mostrare i nomi dei thread completi. Se vuoi nascondere i thread e mostrare solo i processi usa l'opzione -T
.
In genere, pstree
visualizza molte righe di output che non si adattano allo schermo. Per visualizzare l'output una pagina alla volta, esegui il pipe al comando less
:
pstree | less
Se un nome utente viene fornito come argomento, pstree
mostra solo i processi di proprietà di quell'utente. Ad esempio, il comando seguente mostrerà solo quei processi che sono stati avviati da un utente chiamato noviello:
pstree noviello
Quando il PID viene specificato come argomento, pstree
visualizza un albero con il processo indicato come root dell'albero. Ecco un esempio:
pstree 1943
sshd───bash───pstree
Per mostrare i processi padre di un determinato processo utilizzare l'opzione -s
seguita dal processo PID:
pstree -s 1943
systemd───sshd───sshd───bash───pstree
Mostrare PID e PGID
Di solito, quando si esegue il comando pstree
, l'informazione più importante che l'utente sta cercando è l'ID del processo. Ad esempio, conoscere il PID consente di interrompere un processo non funzionante.
L'opzione -p
indica al comando pstree
di mostrare i PID:
pstree -p
I PID sono mostrati tra parentesi dopo ogni processo o thread.
systemd(1)─┬─VBoxService(955)─┬─{VBoxService}(956)
│ ├─{VBoxService}(957)
│ ├─{VBoxService}(958)
│ ├─{VBoxService}(959)
│ ├─{VBoxService}(960)
│ ├─{VBoxService}(961)
│ └─{VBoxService}(962)
...
Per impostazione predefinita, pstree
ordina i processi con lo stesso genitore per nome. L'opzione -n
permette di usare l'ordinamento numerico, cioè l'ordinamento per PID:
pstree -pn
L'ID gruppo PGID o PGID è l'ID processo del primo membro del gruppo processo. Per visualizzare i PGID utilizzare l'opzione -g
:
pstree -g
I PID sono anche mostrati tra parentesi dopo ogni processo o thread.
systemd(1)─┬─VBoxService(954)─┬─{VBoxService}(954)
│ ├─{VBoxService}(954)
│ ├─{VBoxService}(954)
│ ├─{VBoxService}(954)
│ ├─{VBoxService}(954)
│ ├─{VBoxService}(954)
│ └─{VBoxService}(954)
...
Quando vengono visualizzati PID o PGID, l'unione è disabilitata implicitamente.
Mostrare argomenti della riga di comando
Alcuni programmi possono essere richiamati con le opzioni di configurazione specificate come argomenti della riga di comando.
Per impostazione predefinita, pstree
non mostra gli argomenti della riga di comando per i processi in esecuzione. Per visualizzare come è stato avviato il processo, utilizzare il comando insieme all'opzione -a
:
pstree -a
...
├─agetty -o -p -- \\u --keep-baud 115200,38400,9600 ttyS0 vt220
├─agetty -o -p -- \\u --noclear tty1 linux
...
Evidenziare un processo
pstree
consente inoltre di evidenziare i processi per una migliore rappresentazione visiva.
L'opzione -h
indica a pstree
di evidenziare il processo corrente e tutti i suoi antenati.
pstree -h
Per evidenziare un processo specifico, utilizzare l'opzione -H
seguita dall'ID del processo:
pstree -H PID_NUMBER
Se l'evidenziazione non è supportata, il comando verrà chiuso con un errore.
Conclusione
Il comando pstree
visualizza i processi in esecuzione sotto forma di una struttura ad albero.
Per informazioni su tutte le opzioni di pstree
disponibili, digitare il comando man pstree
nel terminale.
man pstree