как запустить скрипт Python после резюме

У меня есть сценарий Python, от которого я должен бежать за возобновляющейся системой, приостанавливают. Я создал исполняемый файл в/etc/pm/sleep.d/

#!/bin/bash 
case "$1" in
    hibernate|suspend|thaw|resume)
        sudo /data/fan/fanSpeedScript.sh
        ;;
esac

выполнение sudo /data/fan/fanSpeedScript.sh это - задание в интерактивном терминале, но сценарий не бежит за возобновлением.

Вот fanSpeedScript.sh

    #!/bin/sh
    python /data/fan/fanSpeed /data/fan/quiet

И fanSpeed

#!/usr/bin/env python

import os
import sys

EC_IO_FILE="/sys/kernel/debug/ec/ec0/io"

if not os.path.exists(EC_IO_FILE):
        os.system("modprobe ec_sys write_support=1")

def ec_write(addr,value):
    with open(EC_IO_FILE,"rb") as f:
        f.seek(addr)
        old_value=ord(f.read(1))
    if (value != old_value):
        print("                %3d => %3d" % (old_value, value))
        with open(EC_IO_FILE,"wb") as f:
            f.seek(addr)
            f.write(bytearray([value]))
    else:
        print("                     = %3d" % value)

for line in open(sys.argv[1]).readlines():
    print(line.strip())
    if line.startswith(">WEC "):
        addr,value=line.split()[1:3]
        ec_write(int(addr,0), int(value,0))

Любая справка ценится.

3
задан 28 March 2017 в 20:59

1 ответ

Эти сценарии работают на меня, возможно, кто-то найдет их полезными. Существует только два необходимые сценария, поскольку сценарий, который называет фактический сценарий Python, является ненужным.

в/etc/pm/sleep.d/99_run_python.sh:

#!/bin/sh

# ensure that we have a working path
PATH=/sbin:/usr/sbin/:/bin:/usr/bin

# see which python is installed
if [ -x /usr/bin/python3 ]; then
    PYTHON=python3
else
    PYTHON=python
fi

case "${1}" in  
    hibernate|suspend|thaw|resume)
        # call python to execute script, and pass some args to script
        $PYTHON /home/some_user_name/test/test_syslog.py /data/fan/quiet/$1/   
        ;;
esac

test_syslog.py:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
import logging
import logging.handlers


def main():
    logging.basicConfig()
    logger = logging.getLogger(__name__)
    logger.setLevel(logging.DEBUG)

    handler = logging.handlers.SysLogHandler()
    formatter = logging.Formatter('%(module)s.%(funcName)s: %(message)s')
    handler.setFormatter(formatter)
    logger.addHandler(handler)

    logger.debug("Hello from python!")

    if len(sys.argv) == 2:
        logger.debug("got arg = {}".format(sys.argv[1]))
    else:
        logger.debug("got no args")

    logger.warning("Will now exit.")
    return 0


if __name__ == "__main__":
    import sys
    sys.exit(main())

Я протестировал их сценарий путем выполнения sudo pm-suspend. Я также заметил, что, когда я использую приостановить апплет, сценарий не всегда становится названным. Но выполнение пополудни - приостанавливает, будет всегда называть сценарий.

0
ответ дан 1 December 2019 в 20:58

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

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