Мне нужно иметь возможность регистрировать время приостановки и возобновления работы системы Ubuntu 10.04 Desktop.
Я могу определить, когда система возобновляется через сигнал DBus (org.freedesktop.UPower.Resuming ()), но соответствующий сигнал «org.freedesktop.UPower.Sleeping ()» никогда не срабатывает. В идеале я хотел бы использовать DBus, но, учитывая отсутствие успеха, я был бы рад любому решению, при условии, что оно может быть вызвано из командной строки.
Я нашел один способ сделать это:
tail -f /var/log/pm-suspend.log | grep "выполняется приостановка"
Это просто прослушивает один из журналов pm для регистрации приостановки. Хотя это работает, это, вероятно, довольно хрупко. Я обнаружил, что в прошлом анализ паролей был довольно проблематичным из-за изменений в операторах журнала.
В идеале я бы хотел более надежный механизм. Служба, которая вызывает это, будет запущена от имени пользователя root.
Вы можете удалить скрипт в /etc/apm/suspend.d . Это должно выполняться каждый раз, когда машина приостанавливается.
Вы также можете использовать /etc/apm/resume.d аналогичным образом, чтобы запустить скрипт, когда он проснется.
Несколько других опций, которые могут работать на более современных системах:
cat /var/log/syslog | grep 'systemd-sleep'
, которые будут отображать приостановки системы и возобновлять их с отметками времени.
или
journalctl | grep suspend
, которые будут отображать также приостановки и резюме с отметками времени. Приостановки здесь будут выглядеть примерно как PM: suspend entry (s2idle)
, а резюме будет выглядеть как suspend exit
.
Попробуйте добавить следующее в /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