Comando who in Linux: leggere le sessioni di accesso registrate

who elenca le sessioni di accesso presenti nei registri di login: normalmente mostra utente, terminale e ora di accesso, con un'eventuale indicazione dell'origine remota. È utile per una prima ricognizione su un server condiviso. Il risultato dipende dai registri disponibili e non equivale all'elenco di tutti i processi attivi.

Più righe con lo stesso nome possono rappresentare più sessioni dello stesso account. Viceversa, un'uscita vuota non dimostra che nessuno stia usando la macchina: alcuni ambienti non registrano gli accessi nel modo consultato da who.

Sintassi e sessioni registrate

who [opzione...]

La riga sopra descrive la sintassi: sostituisci le opzioni quando servono e non copiare le parentesi quadre. Per la consultazione ordinaria esegui:

who

Non occorre preparare file di testo. Who consulta la fonte di registrazione degli accessi prevista dalla sua implementazione, spesso della famiglia utmp. Percorso, disponibilità dei dati e comportamento dipendono dal sistema. Le righe rappresentano i record riconosciuti dal comando, non una verifica indipendente della presenza di una persona davanti al terminale.

Controlla who --version, who --help e man who sulla macchina interessata. Per capire l'identità effettiva del tuo comando usa invece whoami o id: rispondono a una domanda diversa.

Mostrare le intestazioni

who -H

L'opzione H aggiunge i nomi delle colonne, così puoi riconoscere i campi prima di interpretarli. Con il locale C, l'implementazione GNU verificata usa intestazioni come NAME, LINE e TIME; la lingua e le colonne effettive possono cambiare con locale e opzioni.

NAME è l'account riportato nel record, LINE identifica il terminale e TIME indica l'ora di accesso registrata. Non leggere quel tempo come durata dell'attività o come ora dell'ultimo comando eseguito. Se non ci sono sessioni da elencare, può essere visibile soltanto l'intestazione.

Riassumere i nomi con -q

who -q

L'opzione q produce una vista breve con i nomi registrati e il conteggio. Nell'uscita GNU, la riga di riepilogo contiene una forma come # users=2. Il numero riguarda le sessioni conteggiate: lo stesso account può comparire più volte. Non usarlo automaticamente come numero di persone o di account distinti.

Confronta questa vista con who senza opzioni sullo stesso sistema. Se un utente apre due terminali registrati, puoi trovare due record con il suo nome. Su una macchina in uso l'elenco può cambiare tra due esecuzioni: non considerare le due stampe una fotografia atomica dello stesso istante.

Leggere una riga di accesso

who

Un esempio illustrativo è:

alice pts/0 2026-09-28 09:00 (192.0.2.10)

La riga descrive l'account alice, il terminale pts/0, la data e l'ora registrate e un'indicazione remota tra parentesi. L'indirizzo e la data sono dati dell'esempio, non il risultato del tuo server. Il sistema può usare un formato diverso o non mostrare alcuna origine remota.

Il nome pts/0 identifica uno pseudoterminale: non è il nome del computer. La presenza del campo remoto può aiutare a contestualizzare un accesso, ma da sola non ricostruisce l'intera connessione né identifica con certezza una persona. Se ti serve una vista delle sessioni con informazioni sull'attività, considera il comando w, tenendo conto anche dei suoi dati e limiti.

Opzioni e interpretazione di un'uscita vuota

Opzione GNU Uso
-H Aggiunge le intestazioni delle colonne.
-q Mostra i nomi e il conteggio delle sessioni registrate.
-u Include informazioni aggiuntive sugli accessi, tra cui il tempo di inattività.
-b Richiede l'ora dell'ultimo avvio disponibile nei dati consultati.

Per includere il tempo di inattività prova who -u; non confonderlo con la durata totale della sessione o con l'utilizzo della CPU. Con who -b richiedi le informazioni sull'avvio: se l'ambiente non le fornisce, non aspettarti necessariamente una riga valida. Queste opzioni non creano i record mancanti.

Se who non stampa righe, verifica prima dove stai eseguendo il comando: sul server interessato, in un contenitore o in una sessione non interattiva. Considera poi se quella modalità di accesso aggiorna i registri di login. Un contenitore può avere processi attivi senza i record degli accessi dell'host.

Controlla anche lo stato di uscita e gli eventuali messaggi diagnostici. Nel Bash, subito dopo who puoi usare printf '%s\n' "$?"; non inserire un altro comando tra i due, perché sostituirebbe il valore da leggere. Stato zero e nessuna riga significano che quel controllo è terminato senza segnalare un errore, non che sia stata provata l'assenza di utenti.

Per indagare una connessione concreta confronta i dati con il servizio di accesso e con i registri di autenticazione disponibili sulla distribuzione. Who non è uno storico completo, un elenco di tutti i processi o una prova esaustiva delle autorizzazioni. Non modificare i registri di login per far comparire righe durante un controllo.

Le opzioni e il comportamento con assenza di righe sono stati controllati con GNU who 8.32 nel Bash di Git per Windows. Questa prova non riproduce sessioni Linux registrate, tempi di inattività o avvii reali: la riga con alice resta illustrativa e l'interpretazione dei campi deriva anche dal manuale GNU.

Domanda frequente

Se who non mostra nulla, significa che non ci sono utenti?

No. Il comando potrebbe non disporre dei record della sessione, oppure l'ambiente potrebbe non registrarli nella fonte consultata. Verifica contesto, stato di uscita e registri del servizio interessato; la presenza di processi e l'identità effettiva sono controlli distinti.

Documentazione di riferimento

La pagina di manuale di GNU who, scritta dal progetto GNU e pubblicata su man7.org, descrive le opzioni e la fonte predefinita dei dati. Confrontala con il manuale della versione installata, soprattutto quando il sistema usa modalità diverse per registrare le sessioni.