Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#1 Le 12/03/2006, à 20: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.


Mais quand vont-ils tous se taire ?? (De l'indécence médiatique et de sa justification des crimes violents)
Touristes africains, vous n'êtes pas les bienvenus en France.
 

Hors ligne

Haut de page ↑