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