Ricerca nel sito web

30 utili esempi di comandi "ps" per il monitoraggio dei processi Linux


ps (stato dei processi) è un'utilità nativa Unix/Linux per visualizzare informazioni riguardanti una selezione di processi in esecuzione su un sistema: legge queste informazioni dai file virtuali nella cartella/filesystem proc. È una delle utilità importanti per l'amministrazione del 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 ne troverai un piccolo numero praticamente utili per l'uso quotidiano.

Leggi anche: Tutto quello 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.

Tieni presente che ps produce un output con una riga di intestazione, che rappresenta il significato di ciascuna colonna di informazioni. Puoi trovare il significato di tutte le etichette nella pagina man di ps.

Elenca tutti i processi nella shell corrente

1. Se esegui il comando ps senza argomenti, verranno visualizzati i processi per la shell corrente.

ps 

Stampa tutti i processi in diversi formati

2. Visualizza tutti i processi attivi 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 in formato completo, aggiungi il flag -f o -F.

ps -ef
OR
ps -eF

Visualizza i processi in esecuzione dell'utente

5. Puoi selezionare tutti i processi di tua proprietà (runner del comando ps, root in questo caso), digitare:

ps -x 

6. Per visualizzare i processi di un utente in base all'ID utente reale (RUID) o al nome, utilizzare il flag -U.

ps -fU tecmint
OR
ps -fu 1000

7. Per selezionare i processi di un utente in base all'ID utente effettivo (EUID) o al nome, utilizzare l'opzione -u .

ps -fu tecmint
OR
ps -fu 1000

Stampa tutti i processi in esecuzione come root (ID reale ed effettivo)

8. Il comando seguente ti consente di visualizzare tutti i processi in esecuzione con privilegi utente root (ID reale ed effettivo) in formato utente.

ps -U root -u root 

Visualizza processi di gruppo

9. Se desideri elencare tutti i processi di proprietà di un determinato gruppo (ID reale del gruppo (RGID) o nome), digita.

ps -fG apache
OR
ps -fG 48

10. Per elencare tutti i processi di proprietà del nome del gruppo (o della sessione) effettivo, digitare.

ps -fg apache

Visualizza i processi per PID e PPID

11. Puoi elencare i processi in base al PID come segue.

ps -fp 1178

12. Per selezionare il processo tramite PPID, digitare.

ps -f --ppid 1154

13. Effettua una selezione utilizzando un elenco PID.

ps -fp 2226,1154,1146

Visualizza processi tramite TTY

14. Per selezionare i processi tramite tty, utilizzare il flag -t come segue.


ps -t pts/0
ps -t pts/1
ps -ft tty1

Stampa albero del processo

15. Un albero dei processi mostra come i processi sul sistema sono collegati tra loro; i processi i cui genitori sono stati uccisi vengono adottati da init (o systemd).

ps -e --forest 

16. Puoi anche stampare un albero dei processi per un dato processo come questo.

ps -f --forest -C sshd
OR
ps -ef --forest | grep -v grep | grep sshd 

Discussioni del processo di stampa

17. Per stampare tutti i thread di un processo, utilizzare il flag -L, questo mostrerà il LWP (processo leggero) e le colonne NLWP (numero di processi leggeri).

ps -fL -C httpd

Specificare il formato di output personalizzato

Utilizzando le opzioni -o o –format, ps ti consente di creare formati di output definiti dall'utente come mostrato di seguito.

18. Per elencare tutti gli identificatori di formato, includi il flag L.

ps L

19. Il comando seguente consente di visualizzare il PID, il PPID, il nome utente e il comando di un processo.

ps -eo pid,ppid,user,cmd

20. Di seguito è riportato un altro esempio di formato di output personalizzato che mostra il gruppo di file system, il valore nice, l'ora di inizio 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 padre e figlio

22. Per selezionare un processo specifico in base al suo nome, utilizzare il flag -C, questo mostrerà anche tutti i suoi processi figli.

ps -C sshd

23. Trova tutti i PID di tutte le istanze di un processo, utile quando si scrivono script che necessitano di leggere i PID da un output o file std.

ps -C httpd -o pid=

24. Controlla il tempo di esecuzione di un processo.

ps -eo comm,etime,user | grep httpd

L'output seguente mostra che il servizio HTTPD è in esecuzione da 1 ora, 48 minuti e 17 secondi.

Risolvere i problemi relativi alle prestazioni del sistema Linux

Se il tuo sistema non funziona come dovrebbe, ad esempio, se è insolitamente lento, puoi eseguire alcune operazioni di risoluzione dei problemi del sistema come segue.

26. Trova i processi più eseguiti in base al maggiore utilizzo di memoria e CPU 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 terminare processi/applicazioni Linux che non rispondono o qualsiasi processo che consuma molto tempo della CPU.

Innanzitutto, trova il PID del processo o dell'applicazione che non risponde.

ps -A | grep -i stress

Quindi utilizzare il comando kill per terminarlo immediatamente.

kill -9 2583 2584

Stampa informazioni di sicurezza

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

ps -eM
OR
ps --context

29. Con questo comando puoi anche visualizzare le informazioni sulla sicurezza in un formato definito dall'utente.

ps -eo  euser,ruser,suser,fuser,f,comm,label

Esegui il monitoraggio del processo in tempo reale utilizzando Watch Utility

30. Infine, poiché ps visualizza informazioni statiche, è possibile utilizzare l'utilità watch per eseguire il monitoraggio del processo in tempo reale con output ripetitivo, visualizzato dopo ogni secondo come nel comando seguente (specifica 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 l'output aggiornato di frequente puoi utilizzare strumenti come htop; top e sguardi: gli ultimi due sono infatti strumenti di monitoraggio delle prestazioni del sistema Linux.

Potrebbe interessarti anche leggere i seguenti articoli correlati.

  1. Come trovare un nome di processo utilizzando il numero PID in Linux
  2. Trova i principali processi in esecuzione in base al maggiore utilizzo di memoria e CPU in Linux
  3. Una guida ai comandi Kill, Pkill e Killall per terminare un processo in Linux
  4. Come trovare e uccidere i processi in esecuzione in Linux
  5. Come avviare il comando Linux in background e scollegare il processo nel terminale

È tutto per ora. Se hai qualche esempio utile di comando ps da condividere (senza dimenticare di spiegare cosa fa), usa il modulo dei commenti qui sotto.