Introduzione

In questo articolo, spieghiamo il comando who incluso nel pacchetto GNU coreutils.

who è un'utilità della riga di comando che stampa un elenco degli utenti attualmente connessi. Può anche mostrare il livello di esecuzione corrente (runlevel), l'ora dell'ultimo avvio del sistema e altro.

Come utilizzare il comando who

La sintassi di base per il comando who è la seguente:

who [OPTION]... [ FILE | ARG1 ARG2 ]

Quando invocato senza alcuna opzione o argomento, l'output è simile al seguente:

who
root     pts/0        2020-11-18 21:20 (10.10.0.2)
noviello    pts/1        2020-11-18 21:11 (10.10.0.8)

who produrrà un elenco formattato di tutti gli utenti attualmente connessi al sistema.

Ogni riga contiene quattro campi separati da uno o più spazi:

  • Il nome dell'utente registrato.
  • Il terminale dell'utente.
  • L'ora in cui l'utente ha effettuato l'accesso.
  • Il nome host o l'indirizzo IP da cui l'utente ha effettuato l'accesso. Per forzare l'Ips, utilizzare l'opzione --ips.

Se vuoi stampare le intestazioni delle colonne, aggiungi l'opzione -H (--heading):

who -h
NAME      LINE         TIME             COMMENT
root      pts/0        2020-11-18 21:10 (10.10.0.2)
noviello  pts/1        2020-11-18 21:11 (10.10.0.8)

Il comando estrae le informazioni sul sistema e su chi ha effettuato l'accesso dal file /var/run/utmp. Se desideri utilizzare un altro file, passa il percorso del file al comando.

who accetta due argomenti non opzionali. Quando viene richiamato con due argomenti, il comando stampa solo le informazioni sul terminale associato all'utente corrente. Lo stesso output viene visualizzato quando viene utilizzata l' opzione -m.

Puoi usare due argomenti qualsiasi:

who am i

Ciascuno dei comandi precedenti stamperà le stesse informazioni:

noviello  pts/1        2020-11-18 21:11 (10.10.0.8)

Opzioni di comando who

who accetta diverse opzioni che generalmente vengono utilizzate raramente.

L'opzione -b, --boot dice al comando who di stampare l'ora dell'ultimo avvio del sistema:

who -b
system boot  2020-07-21 19:02

Per ottenere un elenco di tutti i processi morti utilizzano l'opzione-d, --dead:

who -d

L'opzione -r, --runlevel, dice all comando who di mostrare il runlevel corrente:

who -r
run-level 5  2020-07-21 20:02

Per ottenere solo i nomi utente e il numero di attualmente gli utenti registrati, utilizzare l'opzione -q, --count:

who -q
root noviello
# users=2

L' opzione -a, --all forza l'output di tutte le informazioni:

who -a
           system boot  2020-07-21 17:02
LOGIN      tty1         2020-07-21 17:02               673 id=tty1
           run-level 5  2020-07-21 17:02
root       - pts/0      2020-11-18 21:10   .       2212314 (89.205.111.11)
           pts/2        2020-10-11 11:19           1363538 id=ts/2  term=0 exit=0
noviello   + pts/1      2020-11-18 21:12 02:46     2212387 (89.205.111.11)

Conclusione

Il comando who stampa un elenco di tutti gli utenti attualmente connessi.

Per ottenere ulteriori informazioni sugli utenti attualmente connessi, controlla il comando w.