Anteriormente demostré el uso de las herramientas last y lastlog para listar los accesos a un servidor Unix, al igual que lastb para mostrar los intentos de acceso fallidos. Sin embargo, no expliqué cómo visualizar los usuarios actualmente logueados en el sistema. Para ello se dispone de las herramientas who y w.



who permite mostrar quiénes son los usuarios actualmente logueados en el sistema:

emi@hal9000:~$ who
emi      :0.0         2019-11-27 07:24 (:0.0)

Por defecto muestra el nombre de usuario junto con la fecha de login y nombre de host (en caso de ser un acceso remoto vía SSH). A su vez, la opción -q permite sumarizar la cantidad de usuarios logueados en la última línea de la salida:

emi@hal9000:~$ who -q
emi
# users=1

Aunque who puede ser de utilidad para mostrar otro tipo de información como el runlevel actual:

emi@hal9000:~$ who -r
         run-level 2  2019-11-27 07:24                   last=S
emi@hal9000:~$ /sbin/runlevel 
N 2

También sirve para mostrar la fecha de inicio del sistema:

emi@hal9000:~$ who -b
         system boot  2019-11-27 07:24

Además es posible listar todos los procesos de login en ejecución:

emi@hal9000:~$ who -H -l
NAME     LINE         TIME             IDLE          PID COMMENT
LOGIN    tty1         2019-11-27 07:24              2000 id=1
LOGIN    tty3         2019-11-27 07:24              2002 id=3
LOGIN    tty4         2019-11-27 07:24              2003 id=4
LOGIN    tty5         2019-11-27 07:24              2004 id=5
LOGIN    tty2         2019-11-27 07:24              2001 id=2
LOGIN    tty6         2019-11-27 07:24              2005 id=6

Se observa 1 proceso de login por cada TTY.

Existe otra herramienta, similar a who, que permite además saber qué está haciendo cada uno de los usuarios logueados en el sistema. Se trata de w.

w muestra información acerca de los usuarios actualmente logueados en la máquina y sus procesos. La primera línea de su salida muestra la misma información que la herramienta uptime, es decir el tiempo en ejecución del sistema, cantidad de usuarios logueados, y carga promedio para llos últimos 1, 5 y 15 minutos. Por ejemplo:

emi@hal9000:~$ w
 10:25:36 up  3:01,  1 user,  load average: 0.56, 0.58, 0.54
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
emi      :0.0     :0.0             07:24   ?xdm?   1:15m  0.01s /bin/sh /etc/xdg/xfce4/xinitrc -- /etc/X11/xinit/xserverrc

Es posible comprobar que la primera línea de la salida es exactamente igual a la salida de uptime:

emi@hal9000:~$ uptime
 10:25:37 up  3:01,  1 user,  load average: 0.56, 0.58, 0.54

Luego, para cada usuario logueado actualmente en el sistema, muestra el nombre de login, nombre de la TTY asociada, host remoto, hora de login, tiempo ocioso, JCPU (tiempo de CPU utilizado por todos los procesos asociados a la TTY) y PCPU (tiempo de CPU utilizado por el proceso actual):

[root@centos ~]# w
 11:00:30 up 65 days,  1:03,  3 users,  load average: 0,19, 0,13, 0,15
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
fulana   pts/1    desktop-k2mrf6i. 10:45   14:30   0.32s  0.32s /usr/bin/mc -P /tmp/mc-fulana/mc.pwd.3364
sultana  pts/0    sultana.linuxito 10:26   50.00s  0.04s  0.04s -bash
admin    pts/3    hal9000.linuxito 10:58    0.00s  0.00s  0.01s sshd: admin [priv]

La opción -s permite ocultar los tiempos de JCPU y PCPU:

[root@centos ~]# w -p
 11:04:03 up 65 days,  1:07,  3 users,  load average: 0,61, 0,23, 0,17
USER     TTY      FROM               IDLE WHAT
fulana   pts/1    desktop-k2mrf6i. 18:03  /usr/bin/mc -P /tmp/mc-fulana/mc.pwd.3364
sultana  pts/0    sultana.linuxito  4.23  -bash
admin    pts/3    hal9000.linuxito  0.00s sshd: admin [priv]

De esta forma es posible ver la actividad de los usuarios actualmente logueados en un servidor Unix.

Para más información, consultar las páginas de manual de who y w:

man who
man w
man uptime


Tal vez pueda interesarte


Compartí este artículo