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#
| Comando | Flag | Significato flag | Cosa fa |
|---|---|---|---|
ps | — | — | Mostra solo i processi della sessione corrente |
ps x | x | all processes | Tutti i processi dell'utente corrente, anche senza terminale |
ps ax | a x | all + all processes | Tutti i processi di tutti gli utenti |
ps aux | a u x | all + user-oriented + all | Vista completa: utente, PID, CPU%, MEM%, comando |
ps uw PID | u w | user-oriented + wide | Dettaglio di un PID specifico senza troncare la riga |
ps -p PID -o pid,user,etime,cmd | -p -o | pid filter + output format | Colonne 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 -tpTTY = 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#
| Codice | Significato |
|---|---|
R | Running — in esecuzione o in coda CPU |
S | Sleeping — in attesa di un evento |
D | Uninterruptible sleep — attesa I/O disco, non interrompibile |
Z | Zombie — terminato ma non ancora raccolto dal padre |
s | Session leader — capostipite del gruppo di processi |
N | Nice — bassa priorita' |
+ | In foreground nel terminale corrente |
Colonna TTY — terminale associato#
| Valore | Significato |
|---|---|
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:SSScenario 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#
- linux-processes — contesto teorico dei processi
Note personali#
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


