last
obtiene su información de /var/run/utmpx
, un archivo que registra las sesiones de usuario y tty, los cierres y los reinicios en el sistema actual. utmpx
es un archivo binario, lo que significa que no puede usar less
o grep
para leerlo o buscar palabras clave.
Para obtener la información de la sesión de la otra Mac, queremos que last
lea /Volumes/1013/var/run/utmpx
.
Desafortunadamente, a last
no se le puede decir que lea un archivo diferente a /var/run/utmpx
, pero aquí es donde chroot
viene al rescate. chroot
toma dos argumentos, una ruta y un comando, establece el directorio raíz percibido del comando en la ruta especificada y lo ejecuta.
En nuestro caso, este es el comando que necesitamos (escriba su contraseña de inicio de sesión cuando se le solicite):
sudo chroot /Volumes/1013/ last
Este comando cambia el directorio raíz para que apunte a /Volumes/1013
, de modo que cuando last
lee /var/run/utmpx
, en realidad lee /Volumes/1013/var/run/utmpx
.
Puede pasar las opciones a last
, si lo desea, o canalizar la salida a grep
para obtener resultados más relevantes, por ejemplo:
sudo chroot /Volumes/1013/ last -10 | grep <some user>
Si el comando anterior no funciona (por ejemplo, obtienes un error de segmentación), prueba esto:
sudo chroot /Volumes/1013/ /Volumes/1013/usr/bin/last -10 | grep <some user>
es decir, ejecuta el ejecutable desde la otra Mac.
Tenga en cuenta que existe un límite en cuanto al tiempo de retroceso con la versión de macOS con cualquiera de los dos métodos.
Por ejemplo, con macOS "Sierra" 10.12, last
funcionó como se esperaba, mientras que con OS X "Mavericks" 10.9, last
solo imprime una línea y luego se cuelga. dtruss
muestra que una grave incompatibilidad es la razón del bloqueo:
$ sudo dtruss -p 39542
dtrace: system integrity protection is on, some features will not be available
SYSCALL(args) = return
dtrace: 3870 dynamic variable drops with non-empty dirty list
lseek(0x8, 0x4000, 0x0) = 16384 0
dtrace: error on enabled probe ID 2175 (ID 945: syscall::read_nocancel:return): invalid kernel access in action #12 at DIF offset 68
Puede superar esta limitación conectando la unidad a una Mac que ejecute una versión anterior de macOS.
Para obtener más información sobre chroot
, ejecute man chroot
en la Terminal.