Skip to main content
  1. Comandi/

ps - process status

·4 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

Cosa fa
#

Mostra uno snapshot istantaneo dei processi in esecuzione sul sistema. A differenza di top, non si aggiorna in tempo reale — produce output testuale pipabile. Ogni processo ha un PID assegnato in ordine crescente; systemd ha sempre PID 1.

Sintassi
#

ps [opzioni]

Comandi essenziali
#

ComandoFlagSignificato flagCosa fa
psMostra solo i processi della sessione corrente
ps xxall processesTutti i processi dell'utente corrente, anche senza terminale
ps axa xall + all processesTutti i processi di tutti gli utenti
ps auxa u xall + user-oriented + allVista completa: utente, PID, CPU%, MEM%, comando
ps uw PIDu wuser-oriented + wideDettaglio di un PID specifico senza troncare la riga
ps -p PID -o pid,user,etime,cmd-p -opid filter + output formatColonne personalizzate per un PID specifico

Leggere l'output di ps aux
#

USER     PID   %CPU %MEM    VSZ    RSS  TTY    STAT  START   TIME  COMMAND
root       1    0.0  0.1  168580  13204  ?      Ss    Mar23  0:02  /sbin/init
barno   4821   99.9  2.1   45200   8100  pts/0  R+    03:14  6:02  python3 /tmp/miner.py
barno  78286    0.0  0.0    8356   5032  ?      Ss    04:16  0:00  bash
  │       │      │    │       │      │    │       │      │     │     │
  │       │      │    │       │      │    │       │      │     │     └─ comando completo con argomenti
  │       │      │    │       │      │    │       │      │     └─ tempo CPU totale consumato
  │       │      │    │       │      │    │       │      └─ ora o data di avvio
  │       │      │    │       │      │    │       └─ stato processo (vedi tabella STAT)
  │       │      │    │       │      │    └─ terminale: pts/N = sessione interattiva, ? = nessun terminale
  │       │      │    │       │      └─ RSS: RAM fisica usata (kilobyte)
  │       │      │    │       └─ VSZ: memoria virtuale totale allocata (kilobyte)
  │       │      │    └─ %MEM: percentuale RAM fisica
  │       │      └─ %CPU: percentuale CPU istantanea
  │       └─ PID: identificativo univoco del processo
  └─ USER: utente proprietario del processo

  ^ bash con TTY "?" e %CPU 0 potrebbe essere una reverse shell dormiente — verifica con ss -tp
Note

TTY = TeleTYpewriter — nome storico dei telescriventi fisici anni '70 collegati ai mainframe. Oggi indica qualsiasi terminale: pts/N e' un terminale virtuale (SSH, tmux), tty1 e' una console fisica, ? significa nessun terminale associato. Non ha relazione con le variabili PS1/PS2 della shell.

Codici STAT — stato del processo
#

CodiceSignificato
RRunning — in esecuzione o in coda CPU
SSleeping — in attesa di un evento
DUninterruptible sleep — attesa I/O disco, non interrompibile
ZZombie — terminato ma non ancora raccolto dal padre
sSession leader — capostipite del gruppo di processi
NNice — bassa priorita'
+In foreground nel terminale corrente

Colonna TTY — terminale associato
#

ValoreSignificato
pts/0, pts/1...Pseudo-terminal slave — terminale virtuale (SSH, tmux, terminale GUI)
?Nessun terminale — processo di sistema o demone
tty1...Terminale fisico o console

In incident response: un processo bash con TTY ? e una connessione ESTABLISHED in ss -tp e' il segnale di una reverse shell. Un bash su pts/N e' una sessione interattiva normale.

Combinazioni utili
#

# Cerca un processo per nome — il grep -v evita che grep trovi se stesso
ps aux | grep nginx | grep -v grep

# Cerca processi sospetti per nome (incident response)
ps aux | grep -i "python\|nc\|wget\|curl\|bash" | grep -v grep

# Top 10 processi per consumo CPU
ps aux --sort=-%cpu | head -10

# Top 10 processi per consumo RAM
ps aux --sort=-%mem | head -10

# Da quanto gira un processo specifico?
ps -p 4821 -o pid,user,etime,cmd
# etime = elapsed time — formato [[GG-]HH:]MM:SS

Scenario Reale
#

Durante un'analisi di incident response, un analista trova il server lento alle 03:14. Il primo comando da eseguire e' ps aux --sort=-%cpu | head -10 — se un processo consuma il 99% della CPU a quell'ora e' un segnale forte. Con il PID trovato si puo' risalire a chi lo ha lanciato, da dove e da quanto gira, prima di procedere al contenimento.

Dove l'ho usato
#

Note personali
#

Tip

ps aux | grep processo | grep -v grep — il secondo grep -v grep e' essenziale. Senza, grep comparirebbe nei risultati mentre cerca se stesso, generando falsi positivi.

Collegato a
#

  • system — categoria
  • kill — per terminare i processi trovati con ps
  • jobs-fg-bg — gestione foreground e background
  • linux-processes — concetto teorico

Related