Я нашел способ заставить это работать без использования журнала для разбора журнала, что на самом деле не очень хорошая идея.
Вместо этого я подключился к хукам systemd -sleep и использовал их для проверки журналов на наличие неудачного сна в течение последних нескольких минут после пробуждения. В этом случае будет воспроизводиться аудиофайл.
Мои инструменты доступны по адресуhttps://gitlab.com/jinnko/failed-sleep-alarm.
Ключом к этому является наличие сценария в /lib/systemd/system-sleep/
, который будет запускаться как до, так и после сна, приостановки или гибернации. Затем этот сценарий может проверить журналы и принять меры. В моем случае скрипт выглядит так: (проверить наличие последней версии в репозитории):
#!/usr/bin/env bash
set -euo pipefail
logger -s -p kern.debug "Invoked $(realpath "$0") $*"
case $1/$2 in
post/*)
if /usr/bin/journalctl --since "2m ago" | grep -E "Failed to start (Hibernate|Sleep|Suspend)"; then
amixer -q sset Master unmute
amixer sset Master '35%'
for i in {1..3}; do
mpg123 -q /usr/share/failed-sleep-alarm/pig.mp3
done
fi
;;
esac