Вы можете поместить свой скрипт в /etc/rc0.d (для остановки) и /etc/rc6.d/ (для перезагрузки). Убедитесь, что у скрипта есть разрешение на выполнение.
Есть разные уровни запуска:
* 0 Остановка системы
* 1 однопользовательский
* 2 Полный многопользовательский режим (по умолчанию)
* 3-5 То же, что 2
* 6 Перезагрузка системы
Уровень выполнения 0 является условием остановки системы. Когда уровень выполнения 0 достигнут, все сценарии в /etc/rc0.d исполняются.
Уровень выполнения 6 используется для сигнализации перезагрузки системы. Это то же самое, что и уровень запуска 0, за исключением того, что в конце последовательности выдается перезагрузка вместо отключения питания.
Если вы хотите выполнить ваш скрипт в спящем режиме или в спящем режиме, поместите ваш скрипт в /etc/pm/sleep.d/
Это пример скрипта:
#!/bin/sh
WLANSTATUS=`cat /sys/class/ieee80211/phy*/rfkill*/state`
test -z $WLANSTATUS && exit 1
case $1 in
hibernate)
# Do something before hibernate
;;
suspend)
# Do something before sleep
;;
thaw)
# Do something after hibernate
;;
resume)
# Do something after sleep
if [ $WLANSTATUS = 0 ]; then
echo 0 > /sys/devices/platform/asus_laptop/wlan
elif [ $WLANSTATUS = 1 ]; then
echo 1 > /sys/devices/platform/asus_laptop/wlan
fi
;;
*) echo "somebody is calling me totally wrong."
;;
esac
Веселись!