Использование Есть ли «переменная», чтобы видеть, находится ли компьютер в спящем режиме?
Вот код, который должен выводиться в файл, когда система переходит в режим SUSPEND или AWAKES:
(этот код находится в /etc/pm/sleep.d)
( также нужно было сделать файл исполняемым: sudo chmod + x sleep_mode)
(при запуске из командной строки записывается "сценарий приостановки" в файл.
(но когда я приостанавливаю работу компьютера или пробуждаю компьютер ... в файл ничего не записывается.)
#!/bin/bash
# general entry
echo "suspend script"
echo "%suspend script" >> /tmp/suspend_time.txt
date +%s >> /tmp/suspend_time.txt
case "$1" in
suspend)
# executed on suspend
echo "%system_suspend" >> /tmp/suspend_time.txt
date +%s >> /tmp/suspend_time.txt
;;
resume)
# executed on resume
echo "%system_resume" >> /tmp/suspend_time.txt
date +%s >> /tmp/suspend_time.txt
;;
*)
;;
esac
Скопируйте свой скрипт в:
/lib/systemd/system-sleep/sleep_mode
Вам нужно будет использовать полномочия sudo
. После копирования пометьте его как исполняемый:
sudo chmod +x /lib/systemd/system-sleep/sleep_mode
Дополнительно измените все вхождения:
echo "%s
на:
echo "s
Знак процента не нужен.
Существующая команда даты в порядке:
date +%s >> /tmp/suspend_time.txt
Однако она отформатирована как количество секунд с 1 января 1970 года, что не является наиболее удобочитаемым форматом даты.
Выражение case
можно изменить:
case $1/$2 in
pre/*)
echo "$0: Going to $2..."
# Place your pre suspend commands here, or `exit 0` if no pre suspend action required
;;
post/*)
echo "$0: Waking up from $2..."
# Place your post suspend (resume) commands here, or `exit 0` if no pre suspend action required
;;
esac