ps (stato dei processi) è un’utilità nativa di Unix/Linux per visualizzare informazioni riguardanti una selezione di processi in esecuzione su un sistema: legge queste informazioni dai file virtuali nel filesystem /proc. È una delle utilità importanti per l’amministrazione di sistema, specificamente sotto il monitoraggio dei processi, per aiutarti a capire cosa sta succedendo in un sistema Linux.
Ha numerose opzioni per manipolare il suo output, tuttavia, troverai un piccolo numero di esse praticamente utili per l’uso quotidiano.
Leggi anche: Tutto ciò che devi sapere sui processi in Linux [Guida completa]
In questo articolo, esamineremo 30 esempi utili di comandi ps per monitorare i processi attivi in esecuzione su un sistema Linux.
Nota che ps produce output con una riga di intestazione, che rappresenta il significato di ogni colonna di informazioni, puoi trovare il significato di tutte le etichette sulla pagina man di ps.
Elenco di tutti i processi nella shell corrente
1. Se esegui il comando ps senza argomenti, visualizza i processi per la shell corrente.
$ ps

Stampa tutti i processi in formati diversi
2. Visualizza ogni processo attivo su un sistema Linux in formato generico (Unix/Linux).
$ ps -A OR $ ps -e

3. Visualizza tutti i processi in formato BSD.
$ ps au OR $ ps axu

4.Per eseguire un elenco completo formattato, aggiungere il flag -f
o -F
.
$ ps -ef OR $ ps -eF

Visualizzare i Processi Eseguiti dall’Utente
5.È possibile selezionare tutti i processi di cui sei proprietario (esecutore del comando ps, root in questo caso), digitare:
$ ps -x
6.Per visualizzare i processi di un utente tramite l’ID utente reale (RUID) o il nome, utilizzare il flag -U
.
$ ps -fU tecmint OR $ ps -fu 1000

7.Per selezionare i processi di un utente tramite l’ID utente effettivo (EUID) o il nome, utilizzare l’opzione -u
.
$ ps -fu tecmint OR $ ps -fu 1000
Stampare Tutti i Processi in Esecuzione come Root (ID Reale ed Effettivo)
8.Il comando qui sotto consente di visualizzare ogni processo in esecuzione con i privilegi dell’utente root (ID reale ed effettivo) nel formato utente.
$ ps -U root -u root

Visualizzare i Processi del Gruppo
9.Se si desidera elencare tutti i processi di un determinato gruppo (ID del gruppo reale (RGID) o nome), digitare.
$ ps -fG apache OR $ ps -fG 48

10.Per elencare tutti i processi di proprietà del nome del gruppo effettivo (o sessione), digitare.
$ ps -fg apache
Visualizzare i Processi per PID e PPID
11.È possibile elencare i processi per PID come segue.
$ ps -fp 1178

12.Per selezionare il processo per PPID, digitare.
$ ps -f --ppid 1154

13.Effettuare una selezione utilizzando un elenco di PID.
$ ps -fp 2226,1154,1146

Visualizzare i Processi per TTY
14.Per selezionare i processi per tty, utilizzare il flag -t come segue.
$ ps -t pts/0 $ ps -t pts/1 $ ps -ft tty1

Stampa l’albero dei processi
15. Un albero dei processi mostra come i processi sul sistema sono collegati tra loro; i processi i cui genitori sono stati terminati sono adottati dall’inizializzazione (o systemd).
$ ps -e --forest

16. È anche possibile stampare un albero dei processi per un dato processo in questo modo.
$ ps -f --forest -C sshd OR $ ps -ef --forest | grep -v grep | grep sshd

Stampa i thread del processo
17. Per stampare tutti i thread di un processo, utilizzare il flag -L
, questo mostrerà le colonne LWP (processo leggero) così come NLWP (numero dei processi leggeri).
$ ps -fL -C httpd

Specifica il formato di output personalizzato
Utilizzando le opzioni -o o –format, ps consente di creare formati di output definiti dall’utente come mostrato di seguito.
18. Per elencare tutti i specificatori di formato, includere il flag L
.
$ ps L
19. Il comando seguente consente di visualizzare il PID, PPID, il nome utente e il comando di un processo.
$ ps -eo pid,ppid,user,cmd

20. Di seguito è riportato un altro esempio di un formato di output personalizzato che mostra il gruppo del sistema di file, il valore di “nice”, l’ora di avvio e il tempo trascorso di un processo.
$ ps -p 1154 -o pid,ppid,fgroup,ni,lstart,etime

21. Per trovare il nome di un processo utilizzando il suo PID.
$ ps -p 1154 -o comm=

Visualizza processi genitore e figlio
22. Per selezionare un processo specifico dal suo nome, utilizzare il flag -C, questo mostrerà anche tutti i suoi processi figlio.
$ ps -C sshd

23. Trova tutti i PID di tutte le istanze di un processo, utile quando si scrivono script che devono leggere i PID da un output standard o da un file.
$ ps -C httpd -o pid=

24. Controlla il tempo di esecuzione di un processo.
$ ps -eo comm,etime,user | grep httpd
Il risultato qui sotto mostra che il servizio HTTPD è stato in esecuzione per 1 ora, 48 minuti e 17 secondi.

Risoluzione dei problemi delle prestazioni del sistema Linux
Se il tuo sistema non sta funzionando come dovrebbe, ad esempio se è insolitamente lento, puoi effettuare alcuni controlli di sistema come segue.
26. Trova i processi in esecuzione più importanti per utilizzo di memoria e CPU più elevato in Linux.
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head OR $ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head

27. Per uccidere processi Linux/applicazioni non rispondenti o qualsiasi processo che consumi molto tempo CPU.
Innanzitutto, trova il PID del processo o dell’applicazione non rispondente.
$ ps -A | grep -i stress
Quindi usa il comando kill per terminarlo immediatamente.
$ kill -9 2583 2584

Stampa informazioni sulla sicurezza
28. Mostra il contesto di sicurezza (specificamente per SELinux) in questo modo.
$ ps -eM OR $ ps --context

29. È anche possibile visualizzare le informazioni sulla sicurezza in un formato definito dall’utente con questo comando.
$ ps -eo euser,ruser,suser,fuser,f,comm,label

Eseguire il Monitoraggio dei Processi in Tempo Reale Utilizzando l’Utility Watch
30. Infine, poiché ps visualizza informazioni statiche, è possibile utilizzare l’utility watch per eseguire il monitoraggio dei processi in tempo reale con output ripetitivo, visualizzato ogni secondo come nel comando seguente (specificare un comando ps personalizzato per raggiungere il tuo obiettivo).
$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'

Importante: ps mostra solo informazioni statiche, per visualizzare output frequentemente aggiornato è possibile utilizzare strumenti come htop; top e glances: gli ultimi due sono infatti strumenti di monitoraggio delle prestazioni di sistema Linux.
Potresti anche essere interessato a leggere gli articoli correlati seguenti.
- Come Trovare un Nome di Processo Utilizzando il Numero PID in Linux
- Trovare i processi in esecuzione principali per utilizzo memoria e CPU più elevato in Linux
- A Guide to Kill, Pkill, and Killall Commands to Terminate a Process in Linux
- Come trovare e terminare i processi in esecuzione in Linux
- Come avviare un comando Linux in background e staccare il processo nel terminale
Per ora è tutto. Se hai qualche utile esempio di comando ps da condividere (senza dimenticare di spiegare cosa fa), utilizza il modulo di commento qui sotto.
Source:
https://www.tecmint.com/ps-command-examples-for-linux-process-monitoring/