# Ps (Unix)

In informatica ps (abbreviazione dalla lingua inglese di process status, stato dei processi) è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX, che produce sullo standard output un elenco di informazioni sui processi al momento presenti nel sistema.
Le informazioni presentate si riferiscono all'istante in cui ps viene eseguito, e possono cambiare anche nel giro di pochi istanti. Per ottenere un elenco aggiornato periodicamente si può usare (se presente) il comando top.

## Uso

La sintassi generale di ps è la seguente:
Se non diversamente specificato, ps produce un elenco sintetico dei processi appartenenti all'utente che lo esegue e che hanno come terminale controllante lo stesso terminale da cui ps viene eseguito.
Esistono tradizionalmente due stili di opzioni che è possibile specificare a ps:
* lo stile POSIX, tipicamente disponibile sui sistemi riconducibili a UNIX System V, tra cui Solaris e HP-UX;
* lo stile BSD, dei sistemi riconducibili a BSD, tra cui FreeBSD, OpenBSD, NetBSD, DragonFly BSD e macOS.
I due stili sono mutuamente incompatibili, perché alcune opzioni dell'uno hanno un significato diverso nell'altro. Esistono tuttavia implementazioni di ps che li supportano entrambi, come ad esempio quella su GNU/Linux, ove si possono usare anche le opzioni stile BSD in maniera non ambigua omettendone il trattino iniziale (ad esempio "ps auxww").

### Opzioni stile POSIX

Tra le opzioni principali vi sono:

#### -d

    Mostra tutti i processi di tutti gli utenti, eccetto quelli che sono leader di sessione (tipicamente shell testuali).

#### -e

    Mostra tutti i processi di tutti gli utenti.

#### -f

    Visualizza le informazioni con un formato che le specifica tutte.

#### -l

    Visualizza le informazioni usando un formato esteso.

#### -p elenco

    Visualizza le informazioni relativamente ai processi aventi i PID specificati. Il parametro elenco è un elenco di PID separati da virgola (",") o da spazio (" ").

#### -o formato

    Visualizza le informazioni usando il formato specificato. Il parametro formato è un elenco di parole chiave separate da virgola (",") o da spazio (" ") che specifica le informazioni da visualizzare.

#### -t elenco

    Visualizza le informazioni relativamente ai processi aventi come terminale controllante i terminali indicati. Il parametro elenco è un elenco di identificativi di terminale separati (",") o da spazio (" ").

#### -u elenco

    Visualizza le informazioni relativamente ai processi degli utenti indicati. Il parametro elenco è un elenco di UID o nomi utente separati da virgola (",") o da spazio (" ").

#### Formati di output

Tramite l'opzione -o è possibile specificare un elenco di parole chiave che indicano quali informazioni visualizzare per ciascun processo.
Alcune di esse sono normalmente visualizzate col formato predefinito, o con i formati delle opzioni -l e -f.
| Parola chiave | Titolo colonna | Opzioni | Informazioni mostrate |
| ruser | RUSER | | il real UID del processo, o il suo nome corrispondente se la larghezza della colonna lo consente |
| user | USER | -l (solo numerico), -f | l'effective UID del processo, o il suo nome corrispondente se la larghezza della colonna lo consente |
| rgroup | RGROUP | | il real GID del processo, o il suo nome corrispondente se la larghezza della colonna lo consente |
| group | GROUP | | l'effective GID del processo, o il suo nome corrispondente se la larghezza della colonna lo consente |
| pid | PID | tutte | il PID del processo |
| ppid | PPID | -l, -f | il parent PID del processo, ovvero il PID del suo processo padre |
| pgid | PGID | | il PGID del processo, ovvero il PID del processo leader del gruppo di processi di cui il processo fa parte |
| pcpu | %CPU | | la percentuale di tempo di CPU che il processo ha usato di recente |
| vsz | VSZ | | dimensione del processo in termini di KiB di memoria virtuale usata |
| nice | NI | -l | valore di nice del processo |
| etime | ELAPSED | | tempo trascorso dall'avvio del processo, espresso in minuti e secondi, preceduti da ore e da giorni se necessario |
| time | TIME | tutte | tempo cumulativo di utilizzo della CPU, espresso in ore, minuti e secondi, preceduti dal numero di giorni se necessario |
| tty | TT | tutte | indicazione del terminale controllante del processo |
| comm | COMMAND | nessuna, -l | nome del comando (senza parametri) |
| args | COMMAND | -f | nome del comando seguito dai parametri (eventualmente troncato) |
Alcune informazioni sono visualizzate solo con il formato predefinito dall'opzione -l:
| Titolo colonna | Informazioni mostrate |
| F | numero che indica eventuali flag associati al processo. |
| S | lo stato del processo (R per running, S per sleeping e Z per zombie (vedi processo zombie) |
| ADDR | indirizzo in memoria del processo |
| SZ | dimensioni in blocchi (di dimensione specifica per la piattaforma, in genere 4 o 8 KiB) del processo |
| WCHAN | l'evento per cui il processo è in attesa |

### Opzioni stile BSD

Tra le opzioni principali vi sono:

#### -a

    Mostra anche i processi degli altri utenti, e non del solo utente che ha avviato ps.

#### -c

    Mostra solo il nome del comando senza i parametri.

#### -e

    Mostra anche le variabili d'ambiente dei processi.

#### -j

    Usa un formato con informazioni utili alla gestione dei job della shell testuale.

#### -l

    Usa un formato esteso.

#### -m

    Ordina l'elenco dei processi in base al loro utilizzo di memoria.

#### -o formato

    Visualizza le informazioni usando il formato specificato. Il parametro formato è una lista di parole chiave separate da una virgola (",") o uno spazio (" "). Per un elenco delle parole chiave si rimanda alla documentazione del singolo sistema operativo.

#### -p pid

    Mostra le informazioni relative al processo che ha il PID specificato.

#### -r

    Ordina l'elenco dei processi in base al loro utilizzo di CPU.

#### -t tty

    Mostra le informazioni relative ai processi che hanno tty come terminale controllante.

#### -U utente

    Mostra le informazioni relative ai processi dell'utente specificato.

#### -u

    Usa un formato con informazioni utili per l'analisi dell'utilizzo di risorse (memoria e CPU) dei processi.

#### -v

    Usa un formato con informazioni utili per l'analisi dell'utilizzo di memoria dei processi.

#### -w

    Se specificata una volta sola, tronca le linee a 132 caratteri. Se specificata più volte, non tronca le linee.

#### -x

    Mostra anche i processi che non hanno un terminale controllante.

## Esempi
### Opzioni stile POSIX

Mostra un elenco esteso di tutti i processi:
Mostra un elenco dei processi dell'utente alice:

### Opzioni stile BSD

Mostra un elenco esteso di tutti i processi (nei sistemi GNU/Linux occorre omettere il trattino prima delle opzioni):
Mostra un elenco dei processi dell'utente alice: