30 Esempi Utili del Comando ‘ps’ per il Monitoraggio dei Processi Linux

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 
List Current Running Processes

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
List Processes in Standard Format

3. Visualizza tutti i processi in formato BSD.

$ ps au
OR
$ ps axu
List Processes in BSD Format

4.Per eseguire un elenco completo formattato, aggiungere il flag -f o -F.

$ ps -ef
OR
$ ps -eF
List Processes in Long List Format

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
List User Processes by ID

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 
Display Root User Running Processes

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
Display Group Processes

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
List Processes by PID

12.Per selezionare il processo per PPID, digitare.

$ ps -f --ppid 1154
List Process by PPID

13.Effettuare una selezione utilizzando un elenco di PID.

$ ps -fp 2226,1154,1146
List Processes by PIDs

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
List Processes by TTY

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 
List Process Tree

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 
List Tree View of Process

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
List Process Threads

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
List Processes with Names

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
List Process ID Information

21. Per trovare il nome di un processo utilizzando il suo PID.

$ ps -p 1154 -o comm=
Find Process using PID

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
Find Parent-Child Process

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=
Find All Process PIDs

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.

Find Process Uptime

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
Find Top Running Processes

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
Find and Kill a Process

Stampa informazioni sulla sicurezza

28. Mostra il contesto di sicurezza (specificamente per SELinux) in questo modo.

$ ps -eM
OR
$ ps --context
Find SELinux 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
List SELinux Context by Users

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'
Real-Time Process Monitoring

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.

  1. Come Trovare un Nome di Processo Utilizzando il Numero PID in Linux
  2. Trovare i processi in esecuzione principali per utilizzo memoria e CPU più elevato in Linux
  3. A Guide to Kill, Pkill, and Killall Commands to Terminate a Process in Linux
  4. Come trovare e terminare i processi in esecuzione in Linux
  5. 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/