У меня есть сценарий 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))
Любая справка ценится.
Эти сценарии работают на меня, возможно, кто-то найдет их полезными. Существует только два необходимые сценария, поскольку сценарий, который называет фактический сценарий 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
. Я также заметил, что, когда я использую приостановить апплет, сценарий не всегда становится названным. Но выполнение пополудни - приостанавливает, будет всегда называть сценарий.