Necesito una lista de los períodos en los que usé mi MacBook durante los últimos 30 días.
Sería suficiente tener una lista de todas las fechas de apertura y cierre de la tapa (porque cierro la tapa cuando no uso la MacBook). Una lista cronológica de todas las fechas de suspensión / activación / apagado / encendido (y tal vez inicio de sesión) también ayudaría.
Lo que no ayudó:
last
comando/var/log/system.log
(que por cierto solo contiene un día)Si es suficiente tener una lista de todos los ciclos de sueño/vigilia (tapa abierta, tapa cerrada), puede ejecutar:
pmset -g log | grep ' Wake '
o
pmset -g log | grep ' sleep '
Juega con la cadena pasada a grep para obtener la información que necesitas.
pmset -g log | grep 'Display is turned on'
.pmset -g log | grep -E 'Wake from|Entering Sleep'
Examiné esto un poco y parece factible, pero deberá observar su comportamiento con el sistema a lo largo del tiempo para determinar exactamente qué mensajes en los registros para grep. Hice el siguiente conjunto de pasos para analizar el historial completo de los ciclos de sueño/vigilia de esta MacBook y se remonta al 12 de agosto.
Precondiciones: Escribir a un usuario no root en ~/Downloads. Cambie las rutas y los nombres de los archivos de salida como desee.
#!/bin/bash
#
# Read system wake/sleep cycles from kernel logs from oldest to newest.
#
# First, read the archived kernel logs for wakes.
for file in $(ls -r /var/log/kernel.log.*) ; do bunzip2 -c $file | grep 'Wake reason:' >> ~/Downloads/wakeup.txt; done
#
# Read current kernel.log for wakes.
grep 'Wake reason:' /var/log/kernel.log >> ~/Downloads/wakeup.txt
#
# Read archived kernel logs for sleeps.
for file in $(ls -r /var/log/kernel.log.*) ; do bunzip2 -c $file | grep ': sleep' >> ~/Downloads/wakeup.txt; done
#
# Read current kernel.log for sleeps.
grep ': sleep' /var/log/kernel.log >> ~/Downloads/wakeup.txt
#
# Sort raw output from greps for chronological picture.
sort -o ~/Downloads/sortedwake.txt ~/Downloads/wakeup.txt
Eso debería darle un salto decente para llegar a una imagen más completa. Puede examinar los registros del kernel para saber cuándo se reinició el sistema, etc. Una vez que sepa qué filtrar, podrá ampliar esto bastante. Diviértete con eso.
Oh, una nota final: si está examinando un sistema que visita muchas redes, verá que el nombre de su sistema cambia en los registros de acuerdo con lo que el servidor DNS asocia con su dirección IP. Se ve un poco extraño, pero es un comportamiento bastante normal.
bunzip2
I need to use gunzip
, elimine los archivos antiguos al principio rm ~/Downloads/wakeup .txt rm ~/Downloads/sortedwake.txt Entonces su secuencia de comandos funciona bien PERO desafortunadamente contiene solo 9 días de historial (el archivo de registro más antiguo es system.log.9.gz
). ¿Hay alguna copia de seguridad oculta más antigua en algún lugar?/etc/newsyslog.conf
de la siguiente manera: /var/log/system.log 640 40 * @T00 J Esto en el futuro, con suerte, conservará mis archivos system.log durante 40 días. (Perdón por el formato feo, el mini-Markdown está roto en este momento)Finalmente lo envolví en un oneliner que extrae los eventos de suspensión y activación del sistema de varios archivos de registro:
(pmset -g log|grep -e " Sleep " -e " Wake "; syslog | grep -e "System Sleep" -e " Wake reason:") | more
Si su sistema ya usa log
en lugar de, syslog
use el siguiente comando en su lugar:
(pmset -g log|grep -e " Sleep " -e " Wake "; log show | grep -e "System Sleep" -e " Wake reason:") | more
Sugerencia 2: el comando syslog también busca automáticamente las entradas system.log archivadas. De forma predeterminada, hay 10 copias de seguridad diarias de system.log. Para guardar 30 días de copias de seguridad de system.log para referencia futura, agregue la siguiente línea a /var/log/newsystemlog.conf
: (todavía evaluando qué tan bien funciona esto)
/var/log/system.log 640 30 * @T00 J
@trane-francks @aglasser ¡Gracias por sus contribuciones! Ayudaron a localizar el problema.
luciérnaga