Список всех дат и времени, когда я использовал свой MacBook?

Мне нужен список периодов времени, когда я использовал свой MacBook за последние 30 дней.

Было бы достаточно иметь список всех дат открытия и закрытия крышки (потому что я закрываю крышку всякий раз, когда не использую MacBook). Также поможет хронологический список всех дат сна / пробуждения / выключения / включения (и, возможно, входа в систему).

Что не помогло:

  • Гугление
  • Команда last_
  • Фильтрация /var/log/system.log(которая, кстати, содержит только один день)
  • Фильтрация консольного приложения (но, возможно, есть способ...)
system.log время от времени меняется, и вы можете увидеть предыдущие журналы, если посмотрите в консоли system.log.0.gz, system.log.1.gz и т. д. Я не знаю, вернутся ли даже эти 30 дней однако.

Ответы (3)

Если достаточно иметь список всех циклов сна/бодрствования (крышка открыта, крышка закрыта), вы можете запустить:

pmset -g log | grep ' Wake '

или

pmset -g log | grep ' sleep '

Поэкспериментируйте со строкой, переданной в grep, чтобы получить необходимую информацию.

Вау, спасибо за этот быстрый ответ. Это выглядит многообещающе! Есть ли шанс вывести более 14 дней с помощью pmset? (Мне нужно не менее 30 дней)
Это не сработало для меня на OSX. Это дало мне неправильное время даты. Но это сработало как шарм: pmset -g log | grep 'Display is turned on'.
Хороший! Вы можете получить лучшую временную шкалу, если используете только одну команду:pmset -g log | grep -E 'Wake from|Entering Sleep'

Я немного рассмотрел это, и это кажется выполнимым, но вам нужно будет посмотреть на свое поведение с системой с течением времени, чтобы точно определить, какие сообщения в журналах нужно выполнить grep. Я выполнил следующий набор шагов, чтобы проанализировать полную историю циклов сна/бодрствования для этого MacBook, и она восходит к 12 августа.

Предварительные условия: Запись пользователю без полномочий root в ~/Downloads. Измените пути и имена выходных файлов по желанию.


#!/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

Это должно дать вам приличный скачок к получению более полной картины. Вы можете просмотреть журналы ядра, чтобы узнать, когда система была перезагружена и т. д. Как только вы узнаете, что фильтровать, вы сможете немного расширить это. Получайте удовольствие от этого.

И последнее замечание: если вы исследуете систему, которая посещает множество сетей, вы увидите, что имя вашей системы изменяется в журналах в соответствии с тем, что DNS-сервер связывает с вашим IP-адресом. Это выглядит немного странно, но это вполне нормальное поведение.

Спасибо за ваш подробный ответ! Я немного поигрался с вашим скриптом, и мне пришлось изменить следующие вещи - файлы называются system.log вместо kernel.log на моем MacBook - вместо того, чтобы bunzip2использовать gunzip- удалить старые файлы в начале rm ~/Downloads/wakeup .txt rm ~/Downloads/sortedwake.txt Тогда ваш скрипт работает хорошо, НО, к сожалению, он содержит только 9 дней истории (самый старый файл журнала — system.log.9.gz). Есть ли где-нибудь более старые скрытые резервные копии?
Хорошо, из чтения apple.stackexchange.com/questions/77373/… я узнал, что файлы system.log будут автоматически чередоваться и обрезаться через несколько дней. Я попытаюсь изменить /etc/newsyslog.confследующим образом: /var/log/system.log 640 40 * @T00 J Надеюсь, в будущем это сохранит мои файлы system.log в течение 40 дней. (Извините за уродливое форматирование, мини-Markdown на данный момент не работает)
@ Джошуа, удачи тебе.

Наконец, я завернул его в однострочник, который извлекает системные события сна и пробуждения из нескольких файлов журнала:

(pmset -g log|grep -e " Sleep " -e " Wake "; syslog | grep -e "System Sleep" -e " Wake reason:") | more

Если ваша система уже использует logвместо syslogэтого следующую команду:

(pmset -g log|grep -e " Sleep " -e " Wake "; log show | grep -e "System Sleep" -e " Wake reason:") | more

  • Подсказка 1: pmset ограничен 14 днями
  • Подсказка 2: Команда syslog также автоматически ищет архивные записи system.log. По умолчанию существует 10 ежедневных резервных копий system.log. Чтобы сохранить 30-дневные резервные копии system.log для дальнейшего использования, добавьте следующую строку в /var/log/newsystemlog.conf: (все еще оценивая, насколько хорошо это работает)


    /var/log/system.log                     640  30     *    @T00  J
    

@trane-francks @aglasser Спасибо за ваш вклад! Они помогли отследить проблему.