Esses scripts funcionam para mim, talvez alguém ache isso útil. Existem apenas dois scripts necessários, pois o script que chama o script python real é desnecessário.
em /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())
Eu testei esse script executando sudo pm-suspend
. Também notei que quando uso um applet de suspensão, o script nem sempre é chamado. Mas a execução do pm-suspend sempre chamará o script.