Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/03/2006, à 19:07

Skippy le Grand Gourou

Pourquoi mon script supprime le répertoire /sys/.../cpufreq ???

Salut,

Je suis en train d'essayer de mettre en place un script qui est censé éteindre le portable quand la batterie atteint un certain seuil de décharge. C'est un script que j'ai trouvé sur le wiki Gentoo, je crois, auquel j'ai tenté d'apporter quelques modifications mineures (juste la réduction de l'intervalle de vérification de la batterie quand le niveau est faible), et qui semble fonctionner farpaitement.

Le problème, c'est qu'un des effets secondaires de ce script est de supprimer le répertoire /sys/devices/system/cpu/cpu0/cpufreq/, et donc le cpu-scaling... hmm

En fait, lorsque le script tourne, il n'y a pas de problème, mais au redémarrage (que l'extinction se soit faite par le script ou manuellement) ce répertoire n'existe plus et j'ai donc droit à une notification comme quoi le CPU ne supporte pas la gestion de la fréquence.

Voici le script en question :

#!/bin/bash

LIMITE_HAUTE="550" ## Réduit l'intervalle de test si le niveau de charge est inférieur à cette limite (in mAh/mWh)
LIMIT="450" ## Suspend if battery level drops below this (in mAh/mWh)
SLEEP_FAST="20"  ## Intervalle de test court
SLEEP="300"  ## Seconds between each battery level check
BAT="BAT1" ## Part of path: /proc/acpi/battery/BAT/
HIBERNATE="/sbin/poweroff"  ##"/usr/local/sbin/hibernate" ## command used to suspend
#HIBERNATE="echo 4 > /proc/acpi/sleep"

while [ true ]; do
  if [ -e "/proc/acpi/battery/$BAT/state" ]; then
     PRESENT=$(/bin/sed -ne "/present:/{s/^present:[ ]*\([a-z]*\)$/\1/p;q}" /proc/acpi/battery/$BAT/state)
     #echo $PRESENT
     if [ "$PRESENT" = "yes" ]; then
        STATE=$(/bin/sed -ne "/charging state:/{s/^charging state:[ ]*\([a-zA-Z]*\)$/\1/p;q}" /proc/acpi/battery/$BAT/state)
        BATTERY=$(/bin/sed -ne "/remaining capacity:/{s/^remaining capacity:[ ]*\([0-9]*\) m[WA]h$/\1/p;q}" /proc/acpi/battery/$BAT/state)
        #echo $BATTERY
        #echo $STATE
        if [ "$BATTERY" -lt "$LIMIT" ] && [ "$STATE" = "discharging" ]; then

           ## Comment out the following line if you don't
           ## want to log the event to system log:
           logger "Battery at ${BATTERY} mWh. Suspending to disk."
           #echo "Battery at ${BATTERY} mWh. Suspending to disk."

           ## Suspend:
           exec "$HIBERNATE"
       fi
     fi
  fi
  if [ "$BATTERY" -lt "$LIMITE_HAUTE" ]; then
     sleep ${SLEEP_FAST}s
  else
     sleep ${SLEEP}s
  fi
done

Je l'ai activé par les commandes :

sudo chmod +x /etc/init.d/fin_batterie
sudo update-rc.d fin_batterie start 20 2 3 4 5 .

Quelqu'un a une idée ? Merci.

Hors ligne