Скрипт сна: не выполняется через pm-hibernate

Я написал скрипт, который должен выполняться до и после гибернации (см. Ниже) на стационарном ПК (без ноутбука). Сценарий выгружает и перезагружает DVB и сетевые модули и помещается в /lib/systemd/system-sleep/40_devb_reload.sh. Этот сценарий работает, если я инициирую спящий режим через графический интерфейс установленной системы Kubuntu 19.04. Но если я выполняю команду sudo pm-hibernate в терминале или сценарий Python выполняет эту команду (check_output("sudo pm-hibernate", shell=True)), сценарий гибернации не выполняется (проверяется через файл журнала, который записывает сценарий), но сама гибернация работает. Первый подход заключается в том, чтобы просто выполнить сценарий перед спящим режимом. Но скрипт Python, который я использую, не имеет корневых привилегий, поэтому выполнение должно инициироваться системой. Примечание (я не знаю, относится ли это к делу): я позволил конкретному пользователю «media» выполнить sudo pm-hibernate без ввода пароля root через запись в etc/sudoers.d/.

Теперь возникает вопрос: как сценарий bash / python может войти в спящий режим с выполнением сценариев сна?

#!/bin/bash
export DISPLAY=:0
timestamp=$(date +"%Y-%m-%d_%H-%M-%S")


echo "$timestamp: DVB suspend script started." >> /home/media/Profile/Scripts/suspend.log
case "$1" in  
    pre)
        /etc/init.d/tvheadend stop
        rmmod ddbridge
        rmmod cxd2841er 
        rmmod dvb_core

        echo "$timestamp: Modules unloaded." >> /home/media/Profile/Scripts/suspend.log
        ;;
    post)
        #restart network driver due hibernate issue on ubuntu 19
        rmmod e1000e
        modprobe e1000e
        modprobe dvb_core
        modprobe cxd2841er
        modprobe ddbridge
        /etc/init.d/tvheadend start
        echo "$timestamp: Modules reloaded." >> /home/media/Profile/Scripts/suspend.log
        ;;
esac
1
задан 18 May 2019 в 13:55

1 ответ

После некоторого тестирования я нашел решение: вместо вызова sudo pm-hibernate использование sudo systemctl hibernate, по-видимому, запускает все побочные эффекты, включая выполнение сценариев в /lib/systemd/system-sleep/. Это работает как в терминале, так и в моих вызовах python выше.

0
ответ дан 18 May 2019 в 13:55

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

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