Comando ps in Linux: vedere processi, PID e stati

ps mostra un’istantanea dei processi al momento dell’esecuzione. Permette di controllare l’identificatore del processo (PID), l’utente, lo stato e il comando per capire se un’attività risulta presente.

Dopo la stampa, ps termina: per osservare aggiornamenti periodici puoi usare top o htop. La presenza di un processo non dimostra, da sola, che un servizio risponda correttamente alle richieste.

Sintassi di base e ambito

ps [opzioni]

Questa guida descrive ps di procps-ng su Linux. Altre implementazioni possono accettare opzioni diverse: consulta man ps sul sistema interessato. Procps-ng combina opzioni Unix con un trattino, opzioni BSD senza trattino e opzioni GNU lunghe con due trattini. La grafia fa parte del significato.

Esempi pratici

Processi dell’utente nel terminale corrente

Senza argomenti, procps-ng seleziona i processi con lo stesso identificatore utente effettivo (EUID) dell’utente corrente e lo stesso terminale di chi esegue il comando. Non è quindi un elenco di tutto il sistema. In un contesto senza terminale, come un’attività automatica, questa selezione può risultare poco utile.

ps

Vista estesa dei processi

-e seleziona tutti i processi visibili e -f usa il formato completo, che include utente, PID, identificatore del processo padre (PPID) e riga di comando.

ps -ef

Campi di un PID specifico

Sostituisci 1234 con il PID da verificare. -p seleziona il processo e -o imposta le colonne nell’ordine indicato. Se il PID non esiste più, non aspettarti una riga di dati per quel processo.

ps -p 1234 -o pid,ppid,user,stat,cmd

user indica l’utente effettivo, stat lo stato con eventuali indicatori aggiuntivi e cmd la riga di comando con gli argomenti. Gli argomenti possono contenere dati riservati: controlla il risultato prima di condividerlo. comm, usato nell’esempio seguente, mostra invece il nome del comando.

Leggere PID, PPID e stato

In una shell come Bash, $$ si espande nel PID della shell corrente. Puoi usarlo per provare una selezione concreta senza indovinare un numero:

ps -o pid,ppid,stat,comm -p $$

Esempio illustrativo: numeri, stato e nome del comando dipendono dalla sessione e non sono un risultato fisso.

    PID    PPID STAT COMMAND
   4321    4100 Ss   bash

Il PID identifica il processo e il PPID il suo padre. In Ss, S significa attesa interrompibile e la s minuscola indica il leader di una sessione. Altri stati comuni sono R (in esecuzione o pronto a eseguire), D (attesa non interrompibile, spesso per I/O), T (arrestato dal controllo dei job) e Z (terminato, ma non ancora raccolto dal padre). Uno stato di attesa non prova da solo un guasto.

La prova disponibile in Windows con Git Bash usa ps (cygwin) 3.6.7: il tentativo con -o termina con «unknown option -- o». Questa implementazione non riproduce i campi e gli stati di procps-ng; l’esempio va verificato su Linux con l’implementazione indicata.

Opzioni e formati principali

Opzione o formato Significato in procps-ng
-e Seleziona tutti i processi visibili.
-f Usa il formato completo e include gli argomenti del comando.
-p PID Seleziona il PID indicato.
-o elenco_colonne Specifica campi e ordine dell’output.
aux Combina la selezione BSD estesa a tutti gli utenti, anche senza terminale, con il formato orientato all’utente.

In ps aux non aggiungere automaticamente un trattino: ps -aux può avere un significato diverso, legato anche all’esistenza di un utente chiamato x. Inoltre -e non supera i limiti di visibilità imposti da contenitori, namespace o restrizioni del sistema.

Precauzioni durante la ricerca

Con ps | grep nome può comparire anche il processo grep usato per cercare; la selezione iniziale di ps rimane comunque limitata. Per una ricerca per nome può essere più adatto pgrep. Nomi simili non bastano a identificare con certezza il processo desiderato.

I processi possono terminare subito dopo la lettura e i PID possono essere riutilizzati. Prima di inviare un segnale, ricontrolla PID, utente e comando: una vecchia riga non garantisce che il numero appartenga ancora alla stessa attività. I comandi mostrati qui consultano informazioni, senza inviare segnali o modificare processi.

Domande frequenti

Qual è la differenza tra ps e top?

ps stampa una selezione dei processi e termina. top aggiorna periodicamente la schermata, permettendo di osservare i cambiamenti nel tempo. Sono utili per controlli diversi; una singola istantanea non mostra l’intero andamento di un carico.

Documentazione di riferimento

Per i campi disponibili, le regole di selezione e le differenze tra le grafie delle opzioni, consulta il manuale ps(1) di procps-ng e confrontalo con man ps della tua installazione.