Как определить, когда система приостанавливается?

Мне нужно иметь возможность регистрировать время приостановки и возобновления работы системы Ubuntu 10.04 Desktop.

Я могу определить, когда система возобновляется через сигнал DBus (org.freedesktop.UPower.Resuming ()), но соответствующий сигнал «org.freedesktop.UPower.Sleeping ()» никогда не срабатывает. В идеале я хотел бы использовать DBus, но, учитывая отсутствие успеха, я был бы рад любому решению, при условии, что оно может быть вызвано из командной строки.

Я нашел один способ сделать это:

tail -f /var/log/pm-suspend.log | grep "выполняется приостановка"

Это просто прослушивает один из журналов pm для регистрации приостановки. Хотя это работает, это, вероятно, довольно хрупко. Я обнаружил, что в прошлом анализ паролей был довольно проблематичным из-за изменений в операторах журнала.

В идеале я бы хотел более надежный механизм. Служба, которая вызывает это, будет запущена от имени пользователя root.

6
задан 18 October 2010 в 19:02

3 ответа

Вы можете удалить скрипт в /etc/apm/suspend.d . Это должно выполняться каждый раз, когда машина приостанавливается.

Вы также можете использовать /etc/apm/resume.d аналогичным образом, чтобы запустить скрипт, когда он проснется.

0
ответ дан 18 October 2010 в 19:02

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

cat /var/log/syslog | grep 'systemd-sleep', которые будут отображать приостановки системы и возобновлять их с отметками времени.

или

journalctl | grep suspend, которые будут отображать также приостановки и резюме с отметками времени. Приостановки здесь будут выглядеть примерно как PM: suspend entry (s2idle), а резюме будет выглядеть как suspend exit.

0
ответ дан 18 October 2010 в 19:02

Попробуйте добавить следующее в /etc/pm/sleep.d. Это не должно зависеть от того, использует ли ваша машина APM или ACPI.

#!/bin/sh

LOGFILE="/var/log/sleep.log"

case "$1" in
        resume)
                echo "Resumed from suspend at `date`" >> "$LOGFILE"
                ;;
        thaw)
                echo "Resumed from hibernation at `date`" >> "$LOGFILE"
                ;;
        suspend)
                echo "Suspended to ram at `date`" >> "$LOGFILE"
                ;;
        hibernate)
                echo "Hibernated to disk at `date`" >> "$LOGFILE"
                ;;
esac
0
ответ дан 18 October 2010 в 19:02

Другие вопросы по тегам:

Похожие вопросы: