Per offrirti un'esperienza di navigazione sempre migliore, questo sito utilizza cookie propri e di terze parti, partner selezionati. I cookie di terze parti potranno anche essere di profilazione.
Le tue preferenze si applicheranno solo a questo sito web. Puoi modificare le tue preferenze in qualsiasi momento ritornando su questo sito o consultando la nostra informativa sulla riservatezza.
E' possibile rivedere la nostra privacy policy cliccando qui e la nostra cookie policy cliccando qui.
Per modificare le impostazioni dei cookies clicca qui
  • seguici su feed rss
  • seguici su twitter
  • seguici su linkedin
  • seguici su facebook
  • cerca

SEI GIA' REGISTRATO? EFFETTUA ADESSO IL LOGIN.



ricordami per 365 giorni

HAI DIMENTICATO LA PASSWORD? CLICCA QUI

NON SEI ANCORA REGISTRATO ? CLICCA QUI E REGISTRATI !

Come visualizzare i processi attivi, in Linux: il comando ps

di :: 26 febbraio 2020
Come visualizzare i processi attivi, in Linux: il comando ps

Anche se il tuo server Linux sembra inattivo, in realtà nasconde una serie di processi in esecuzione in background.

Esistono diversi strumenti che possiamo usare per identificare i processi sul nostro sistema: conoscerli ci consentirà di verificarne l'impatto sulle risorse del sistema (CPU e RAM), e, se necessario, di terminarli.

Il comando ps: visualizzare l'elenco dei processi

Il comando ps, con l'opzione -e, elenca tutti i processi in esecuzione

ps -e

Il risultato sarà una lista come questa

  PID TTY          TIME CMD
    1 ?        00:20:38 systemd
    2 ?        00:00:04 kthreadd
    3 ?        00:00:03 ksoftirqd/0
    5 ?        00:00:00 kworker/0:0H
    7 ?        00:00:11 migration/0
    8 ?        00:00:00 rcu_bh
    9 ?        02:28:54 rcu_sched
   10 ?        00:00:00 lru-add-drain
   11 ?        00:01:37 watchdog/0
   12 ?        00:01:11 watchdog/1
   13 ?        00:00:10 migration/1
   14 ?        00:00:04 ksoftirqd/1
   16 ?        00:00:00 kworker/1:0H
   17 ?        00:01:14 watchdog/2
   18 ?        00:00:09 migration/2
   19 ?        00:03:53 ksoftirqd/2
   21 ?        00:00:00 kworker/2:0H
   22 ?        00:01:09 watchdog/3
   23 ?        00:00:22 migration/3
   24 ?        00:00:03 ksoftirqd/3
   26 ?        00:00:00 kworker/3:0H
   28 ?        00:00:00 kdevtmpfs
   29 ?        00:00:00 netns
   30 ?        00:00:07 khungtaskd
......................................

Questo è solo un estratto della lista dei processi presenti sul nostro server Linux: un server Linux presenta infatti un gran numero di processi in esecuzione.

L'elenco presenta quattro colonne:

  1. PID: è l' ID (identificativo) del processo, utile nel caso volessimo terminare ("killare") il processo.
  2. TTY: è il terminale su cui è in esecuzione il processo. Un punto interrogativo nella colonna  significa che il processo non è collegato a nessun terminale, ma è in esecuzione in background.
  3. TIME: è la durata di esecuzione del processo
  4. COMMAND: indica il come del comando che ha lanciato il processo

Se volessimo visualizzare solo 20 righe per volta:

ps -e | more -20

Un utilizzo molto diffuso del comando "ps" è con l'opzione "aux", con cui ottenimao la lista dei processi attivi con il relativo consumo di CPU e RAM

ps -aux | more -20

L'opzione a indica la visualizzazione dei processi di tutti gli utenti, ad eccezione di quei processi che non sono associati a un terminale, quindi che sono in background.
L'opzione u fornisce informazioni dettagliate sui processi.
L'opzione x elenca i processi non associati ad un terminale. Sono processi che vengono avviati all'avvio e che sono in esecuzione in background.

Il risultato sarà il seguente

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0 191112  3788 ?        Ss    2019  20:38 /usr/lib/systemd/systemd --system --deserialize 17
root         2  0.0  0.0      0     0 ?        S     2019   0:04 [kthreadd]
root         3  0.0  0.0      0     0 ?        S     2019   0:03 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<    2019   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S     2019   0:11 [migration/0]
root         8  0.0  0.0      0     0 ?        S     2019   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        S     2019 148:54 [rcu_sched]
root        10  0.0  0.0      0     0 ?        S<    2019   0:00 [lru-add-drain]
root        11  0.0  0.0      0     0 ?        S     2019   1:37 [watchdog/0]
root        12  0.0  0.0      0     0 ?        S     2019   1:11 [watchdog/1]
root        13  0.0  0.0      0     0 ?        S     2019   0:10 [migration/1]
root        14  0.0  0.0      0     0 ?        S     2019   0:04 [ksoftirqd/1]
root        16  0.0  0.0      0     0 ?        S<    2019   0:00 [kworker/1:0H]
root        17  0.0  0.0      0     0 ?        S     2019   1:14 [watchdog/2]
root        18  0.0  0.0      0     0 ?        S     2019   0:09 [migration/2]
root        19  0.0  0.0      0     0 ?        S     2019   3:53 [ksoftirqd/2]
root        21  0.0  0.0      0     0 ?        S<    2019   0:00 [kworker/2:0H]
root        22  0.0  0.0      0     0 ?        S     2019   1:09 [watchdog/3]
root        23  0.0  0.0      0     0 ?        S     2019   0:22 [migration/3]

Le colonne presentano queste informazioni

  1. USER: l'utente che esegue il processo.
  2. PID: l'identificativo del processo
  3. %CPU: la % di utilizzo della CPU
  4. %MEM: la % di utilizzo della RAM
  5. VSZ: la dimensione della memoria virtuale (Virtual Size) del processo, espressa in KiB.
  6. RSS: la dimensione della memoria fisica (Resident Set Size) utilizzata dal processo.
  7. TTY: è il terminale su cui è in esecuzione il processo. Un punto interrogativo nella colonna  significa che il processo non è collegato a nessun terminale, ma è in esecuzione in background.
  8. STAT: è un codice identificativo dello stato del processo. Può essere Z (zombie), S (sleeping), R (in esecuzione: running) ....
  9. START: l'ora di inizio del comando.
  10. TIME: è la durata di esecuzione del processo
  11. COMMAND: indica il come del comando che ha lanciato il processo

Ordinare l'output di ps

E' possibile ordinare l'output di ps in base all'utilizzo di memoria utilizzando l'argomento sort come segue

ps aux --sort=-%mem

Analogamente per ordinare in base all'utilizzo di cpu

ps aux --sort=-%cpu

Trovare un processo con pgrep

Il comando pgrep è una combinazione di ps e grep, in cui occorre specifcare il nome, o parte del nome, di un processo che stiamo cercando: verrà restituita la lista dei processi, o il processo, con quel nome.

Ad esempio, per estrarre i processi "ssh" attivi utilizziamo

pgrep ssh

Il risultato sarà ad esempio il seguente: sono precesenti 2 processi attivi, di cui viene reso il PID

31971
32352

Per avere il dettaglio del singolo processo utilizziamo

ps -e | grep 31971

oppure

ps -aux | grep 31971

I processi associati alla shell corrente

Digitando semplicemente "ps", senza argomenti, otteniamo i processi della shell corrente

ps

Il risultato, ad esempio, è

  PID TTY          TIME CMD
 9739 pts/0    00:00:00 bash
10845 pts/0    00:00:00 ps

I processi dell'utente attivo

Per visualizzare i tuoi processi, cioè i processi dell'utente con cui hai effettuato il login, utilizziamo l'agomento -x

ps -x

I processi di uno specifico utente

Per visalizzare i processi generati da uno specifico utente, ad esempio l'utente root, utilizziamo l'argomento U seguito dal nome utente

ps -U pippo

In conclusione: il comando ps  è uno dei comandi più utilizzati per il monitoraggio di un server Linux, ha molte opzioni ed in questo articolo abbiamo visti solo alcuni esempio di utilizzo.

Potrebbe interessarti

 
x

ATTENZIONE