#!/bin/bash # $Id: power_scriptd_0custom.txt 519 2006-09-11 06:15:28Z tas $ # source configuration . pmcs-config logfile=/var/log/power.0_custom.log servfile=/tmp/services.loaded modsfile=/tmp/modules.loaded SERV=(net.eth0 net.eth1 net.eth2 slapd) SERVRM=(ifplugd) MODS=() MODSRM=(usblp usbhid) function log { cat >> $logfile } (echo; date;) 2>&1 | log function service_suspend { SAVE=() for s in ${SERV[@]}; do if [ "`/etc/init.d/${s} status | grep 'status:' | awk '{print $3}'`" = "started" ]; then SAVE=( ${SAVE[*]} ${s} ) fi done echo ${SAVE[@]} > $servfile echo INIT.D STOP ${SAVE[@]} ${SERVRM[@]} for s in ${SAVE[@]} ${SERVRM[@]}; do /etc/init.d/${s} stop done } function service_resume { slist="$(<${servfile})" echo INIT.D START $slist for s in $slist; do /etc/init.d/${s} start done mv -f ${servfile} ${servfile}.old } function modules_suspend { SAVE=() for s in ${MODS[@]}; do if [ -n "`lsmod | awk '{print $1}' | grep ^${s}\$`" ]; then SAVE=( ${SAVE[*]} ${s} ) fi done echo ${SAVE[@]} > $modsfile echo RMMOD ${SAVE[@]} ${MODSRM[@]} rmmod ${SAVE[@]} ${MODSRM[@]} rmmod ${SAVE[@]} ${MODSRM[@]} 2>/dev/null } function modules_resume { slist="$(<${modsfile})" echo MODPROBE $slist for s in $slist; do modprobe ${s} done mv -f ${modsfile} ${modsfile}.old } case "$1" in powersave) ;; custom) ;; performance) ;; suspend) service_suspend 2>&1 | log modules_suspend 2>&1 | log ;; resume) modprobe sungem 2>&1 | log modules_resume 2>&1 | log sleep 2s service_resume 2>&1 | log ;; esac date 2>&1 | log return 0