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.
La sintassi generale di ps è la seguente:
ps [opzioni]
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:
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").
Tra le opzioni principali vi sono:
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 |
Tra le opzioni principali vi sono:
Mostra un elenco esteso di tutti i processi:
ps -ef
Mostra un elenco dei processi dell'utente alice:
ps -u alice
Mostra un elenco esteso di tutti i processi (nei sistemi GNU/Linux occorre omettere il trattino prima delle opzioni):
ps -auxww
Mostra un elenco dei processi dell'utente alice:
ps -U alice