#1 Le 29/10/2013, à 19:06
- toutafai
[Résolu] aide script surveillance temperature CPU
Bonjour a toutes et a tous,
EDITION : Problème résolut, un grand merci a tous ceux qui m'ont aidé !!! Je met le script a la fin de ce 1 er message. Il est parfaitement fonctionnel mais Il n'est certainement pas optimisé (normal, je débute et je rame), donc si vous avez des suggestions/optimisations, n'hésitez pas.
Mon problème : J'ai upgradé mon portable avec un CPU plus puissant, depuis j'ai mon portable qui chauffe un peu de trop a mon goût. J'ai bien sur pris soin de remettre de la patte thermique (Artic Silver 3 pour les connaisseurs) et de nettoyer l'ensemble ventilo/radiateur. Ce qui n’empêche que je suis monté jusqu'a 83°
L'acpi de mon portable (un Lenovo thinkpad r60) gère mal la température, il ne fait pas assez vite tourner le ventilo pour les "hautes" température.
Ce que je voudrais : avoir un script (qui se lance au démmarrage du pc) qui surveille la température et selon la température, qui augmente ou ralenti le ventilo en executant une commande
Actuellement je surveille le température(à la main) avec la commande "sudo acpi -t" qui me donne le résultat suivant :
Thermal 0: ok, 57.0 degrees C
Thermal 1: ok, 58.0 degrees C
Si la température est en dessous de 55°, je lance
sudo echo level auto > /proc/acpi/ibm/fan
si la température est entre 55° et 60, je lance a la main un petit coup de
sudo echo level 5 > /proc/acpi/ibm/fan
Ce qui accélére un peu le ventilateur
si la température est entre 61° et 68, je lance a la main un petit coup de
sudo echo level 7 > /proc/acpi/ibm/fan
Ce qui accélère plus le ventilateur
Si cela passe au dessus des 68° (aie aie aie), je lance un
sudo echo level full-speed > /proc/acpi/ibm/fan
Ce qui pousse le ventilateur au max (j'ai un avion qui décolle a coté de moi, mais je préfère cela a un avion qui brûle ^^ )
Je ne pense pas que ce soit un script très compliqué a faire et si j'avais les connaissances pour le faire moi même, vous ne seriez pas entrain de lire ce message
Mon CPU et moi-même vous remercie énormément par avance.
==========================================================================================================================
SOLUTION :
Script executé en tant qu'utilisateur (avec droits sudo) toutes le 60 secondes via une tâche cron
#! /bin/bash
###########################################
# Script de Monitoring du ventilateur CPU #
###########################################
#
# Les Variables
#
# tempcpu : La temperature du CPU mesurée à l'aide de la sonde
# level : Niveau de ventilation avant l'execution du script
# lefelf : Niveau de ventilation forcé par l'execution du script
#
#
###
# Initialisation des variables
read tempcpu < <(acpi -t| awk -F'[,% ] *' '{ print $4}')
level=$(awk '/^level:/{print $2}' /proc/acpi/ibm/fan)
###
# test temperature et réglage vitesse ventilateur en consequence
if [[ $tempcpu < 57 ]]
then
levelf=0
echo level 0 > /proc/acpi/ibm/fan
elif [[ $tempcpu < 60 ]]
then
levelf=1
echo level 1 > /proc/acpi/ibm/fan
elif [[ $tempcpu < 65 ]]
then
levelf=3
echo level 3 > /proc/acpi/ibm/fan
elif [[ $tempcpu < 67 ]]
then
levelf=5
echo level 5 > /proc/acpi/ibm/fan
elif [[ $tempcpu < 70 ]]
then
levelf=7
echo level 7 > /proc/acpi/ibm/fan
else
levelf=disengaged
echo level full-speed > /proc/acpi/ibm/fan
fi
###
# test es-ce la vitesse du ventilateur a été changée par script
if [[ $levelf != $level ]]
then
###
# Si oui, affichage du message dans X
case "$levelf" in
"0") zenity --info --text="Ventilation stopée" --timeout "2" --display=:0.0 ;;
"1") zenity --info --text="Ventilation Niveau 1" --timeout "2" --display=:0.0 ;;
"3") zenity --info --text="Ventilation Niveau 3" --timeout "2" --display=:0.0 ;;
"5") zenity --info --text="Ventilation Niveau 5" --timeout "2" --display=:0.0 ;;
"7") zenity --info --text="Ventilation Niveau 7" --timeout "2" --display=:0.0 ;;
"disengaged") zenity --info --text="Ventilation Niveau Max" --timeout "2" --display=:0.0 ;;
esac
fi
Dernière modification par toutafai (Le 19/11/2013, à 20:46)
Tombé dans l'informatique étant petit, j'en ai fait mon métier. Utilisateur d'Ubuntu depuis novembre 2006, actuellement sous 20.04 x64 (Que d'évolution
depuis Dapper Drake ! Ça rajeunit pas ^^^).
Hors ligne
#2 Le 29/10/2013, à 19:31
- Shanx
Re : [Résolu] aide script surveillance temperature CPU
Salut
voilà un script fait vite fait (et non testé) :
#! /bin/bash
read state < <(acpi -t| awk -F'[,% ] *' '{ print $4}')
if [[ $state < 55 ]]
then
echo level auto > /proc/acpi/ibm/fan
elif [[ $state < 61 ]]
then
echo level 5 > /proc/acpi/ibm/fan
elif [[ $state < 69 ]]
then
echo level 7 > /proc/acpi/ibm/fan
else
echo level full-speed > /proc/acpi/ibm/fan
fi
Pour le lancer, n’oublie pas de le rendre exécutable et de mettre sudo devant. Tu peux aussi le mettre dans ton cron, pour qu’il soit lancé automatiquement (par exemple toutes les minutes ou toutes les 5 minutes).
EDIT : le même script, mais en version incompréhensible
#! /bin/bash
[[ $state < 55 ]] && { echo level 5 > /proc/acpi/ibm/fan ;} || { [[ $state < 61 ]] && { echo level 5 > /proc/acpi/ibm/fan ;} || { [[ $state < 69 ]] && { echo level 7 > /proc/acpi/ibm/fan ;} || { [[ $state > 68 ]] && { echo level full-speed > /proc/acpi/ibm/fan ;} ;} ;} ;}
Dernière modification par Shanx (Le 29/10/2013, à 19:34)
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne
#3 Le 29/10/2013, à 19:52
- toutafai
Re : [Résolu] aide script surveillance temperature CPU
Wahoo, rapide comme l'éclair, merci merci merci !!!
Je test cela ce soir (car la gosse, repas, douche, etc etc) et je te fait un retour
Ps : Juste un truc (désolé pour la question certainement bête mais bon ...quand on sait pas, ben on sait pas) le fait de le lancer avec sudo devant 'transmet" le droit sudo pour le commande contenu dans le script ? mais si je le lance via le cron il va pas me demander le mot de passe ?
Tombé dans l'informatique étant petit, j'en ai fait mon métier. Utilisateur d'Ubuntu depuis novembre 2006, actuellement sous 20.04 x64 (Que d'évolution
depuis Dapper Drake ! Ça rajeunit pas ^^^).
Hors ligne
#4 Le 29/10/2013, à 20:03
- jplemoine
Re : [Résolu] aide script surveillance temperature CPU
J'avais un peu le même style (doit être fonctionnel) :
#! /bin/bash
temp=`acpi -t | awk '{print $4}' | awk -F. '{print $1}'`
if [ $temp -lt 55 ]
then
$cmd = `echo level auto > /proc/acpi/ibm/fan`
exit
fi
if [ $temp -lt 60 ]
then
$cmd = `echo level 5 > /proc/acpi/ibm/fan`
exit
fi
if [ $temp -lt 68 ]
then
$cmd = `echo level 7 > /proc/acpi/ibm/fan`
exit
fi
$cmd = `echo level full-speed > /proc/acpi/ibm/fan`
- pour le script, je pense que le fait de le lancer en sudo donne les bons droits si lancement manuel.
- si c'est dans le cron, c'est déjà lancé par root, donc pas besoin de sudo.
pour le script, on doit pouvoir faire mieux (paramétrage), mais il fait plus de temps...
Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.
Hors ligne
#5 Le 29/10/2013, à 22:18
- toutafai
Re : [Résolu] aide script surveillance temperature CPU
@Shanx : bon, j'ai testé et j'approuve . Par contre je l'ai lancé à la main pour le moment (avec un sudo -s avant), pour le cron, es-ce que cela te parait bien cette méthode (je suis allé voir la doc car pas sur de moi, et je préfère avoir un avis)
sudo crontab -e
puis ajout de la ligne
*/1 * * * * /usr/bin/script-temp.sh
si j'ai bien compris :
1/ pas besoin de sudo puisque "crontab -e" ?
2/ cela va l'executer toutes les minutes ?
3/ sur qu'il faut pas rajouter sudo devant les commande du script ? (désolé d'insiter, pas envie de me rater sur ce coup)
@jplemoine : merci beaucoup pour ta participation
Dernière modification par toutafai (Le 29/10/2013, à 22:20)
Tombé dans l'informatique étant petit, j'en ai fait mon métier. Utilisateur d'Ubuntu depuis novembre 2006, actuellement sous 20.04 x64 (Que d'évolution
depuis Dapper Drake ! Ça rajeunit pas ^^^).
Hors ligne
#6 Le 29/10/2013, à 22:21
- Shanx
Re : [Résolu] aide script surveillance temperature CPU
@Shanx : bon, j'ai testé et j'approuve
Cool.
sudo crontab -e
puis ajout de la ligne
*/1 * * * * /usr/bin/script-temp.sh
si j'ai bien compris :
1/ pas besoin de sudo puisque "crontab -e" ?
2/ cela va l'executer toutes les minutes ?
1/ Oui.
2/ Oui.
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne
#7 Le 29/10/2013, à 23:08
- nam1962
Re : [Résolu] aide script surveillance temperature CPU
Sinon, il y a TLP http://forum.ubuntu-fr.org/viewtopic.ph … #p13691201
[ Modéré ]
Hors ligne
#8 Le 30/10/2013, à 00:42
- toutafai
Re : [Résolu] aide script surveillance temperature CPU
Le script marche pil poil, copié dans /usr/local/sbin et lancé auto via le crontab. Reste a voir dans le temps ce que cela donne.
Pour suivre tous cela, je me suis amusé a construire un log, histoire de tracé les actions de ce script, voila ce que cela donne (si cela peut servir à d'autres)
[b]EDITION : [/b] Script mis dans mon 1 er message pour une meilleure lecture
Dans quelque jours, je mettrais en place une purge de ce log à l'ouverture de session.
je passe le post en [résolu], encore un grand merci a vous tous !!
Dernière modification par toutafai (Le 19/11/2013, à 20:36)
Tombé dans l'informatique étant petit, j'en ai fait mon métier. Utilisateur d'Ubuntu depuis novembre 2006, actuellement sous 20.04 x64 (Que d'évolution
depuis Dapper Drake ! Ça rajeunit pas ^^^).
Hors ligne
#9 Le 30/10/2013, à 09:51
- jplemoine
Re : [Résolu] aide script surveillance temperature CPU
Voir logrotate : Voir là
Si on active la compression, il suffit ensuite de purger de temps en temps, les 'qz'.
On garde le courant et celui d'avant, les autres sont en gz et seront purgés (soit manuellement soit en tâche cron).
Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.
Hors ligne
#10 Le 30/10/2013, à 12:07
- toutafai
Re : [Résolu] aide script surveillance temperature CPU
merci jplemoine, purée cela me revient maintenand... il faut dire que mes cours linux date de plus de 10 ans
Dernière modification par toutafai (Le 30/10/2013, à 12:08)
Tombé dans l'informatique étant petit, j'en ai fait mon métier. Utilisateur d'Ubuntu depuis novembre 2006, actuellement sous 20.04 x64 (Que d'évolution
depuis Dapper Drake ! Ça rajeunit pas ^^^).
Hors ligne
#11 Le 17/11/2013, à 01:12
- toutafai
Re : [Résolu] aide script surveillance temperature CPU
Bonsoir a tous,
Bon ce script tourne bien sans probleme jours, j'ai affiné les températures des déclenchement bref, nickel il fait correctement le taff et le proc est meiux régulé en températures.
Il y a juste un truc qui me "gêne" c,'est ce que j'ai rajouté... moi, en tant que newbie du bash
echo -e 'Remis en auto a' $heure >> /var/log/log_script-temp.log
Cela me génère un fichier log un peu "imbuvable" du genre
23:40:02 Remis en auto
23:41:02 Remis en auto
23:42:02 Remis en auto
23:43:02 Remis en auto
j'aimerais plutôt avoir
23:46:02 Remis au niveau 3
23:53:02 Remis au niveau 5
23:59:02 Remis en auto
D'avance merci.
Dernière modification par toutafai (Le 17/11/2013, à 01:13)
Tombé dans l'informatique étant petit, j'en ai fait mon métier. Utilisateur d'Ubuntu depuis novembre 2006, actuellement sous 20.04 x64 (Que d'évolution
depuis Dapper Drake ! Ça rajeunit pas ^^^).
Hors ligne
#12 Le 17/11/2013, à 09:43
- jplemoine
Re : [Résolu] aide script surveillance temperature CPU
il faut que tu lises l'état actuel : s'il est déjà au bon état, pas de changement et pas de log.
Pour la mise en auto (à adapter aux autres états), faire un truc du genre (non testé)
etat = `ls /proc/acpi/ibm/fan`
if [[ $etat ne 'auto' ]]
then
heure=$(date +%T)
echo level auto > /proc/acpi/ibm/fan
echo -e 'Remis en auto a' $heure >> /var/log/log_script-temp.log
fi
Comme ça, s'il est déjà en auto, il ne fait rien et dans ton log, il n'y aura que les changements d'état.
Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.
Hors ligne
#13 Le 18/11/2013, à 21:30
- toutafai
Re : [Résolu] aide script surveillance temperature CPU
cela ne marche pas..
le retour de cat /proc/acpi/ibm/fan me donne ceci :
status: disabled
speed: 0
level: 0
commands: level <level> (<level> is 0-7, auto, disengaged, full-speed)
commands: enable, disable
commands: watchdog <timeout> (<timeout> is 0 (off), 1-120 (seconds))
Il faut donc que je récupère dans une variable la valeur (celle au niveau de "level: 0" dans l'exemple du dessus, sachant que celle-ci peut aussi prendre les valeurs 0,1,3,5,7 mais aussi "auto" et "disengaged") ; afin de tester cette derniere avec la valeur que je souhaite appliquer, si elle est differente alors on exécute les commande de maj et de log...sinon on sort de la boucle.
Tombé dans l'informatique étant petit, j'en ai fait mon métier. Utilisateur d'Ubuntu depuis novembre 2006, actuellement sous 20.04 x64 (Que d'évolution
depuis Dapper Drake ! Ça rajeunit pas ^^^).
Hors ligne
#14 Le 18/11/2013, à 22:37
- jplemoine
Re : [Résolu] aide script surveillance temperature CPU
oui. il faut peut-être essayer
cat /proc/acpi/ibm/fan level
Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.
Hors ligne
#15 Le 19/11/2013, à 03:01
- Postmortem
Re : [Résolu] aide script surveillance temperature CPU
Salut,
Pour récupérer la valeur level dans /proc/acpi/ibm/fan (ce fichier n'existe pas chez moi donc je me suis basé sur ce que tu as mis en #13) :
MY_LEVEL=$(awk '/^level:/{print $2}' /proc/acpi/ibm/fan)
Dernière modification par Postmortem (Le 19/11/2013, à 13:20)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#16 Le 19/11/2013, à 13:17
- toutafai
Re : [Résolu] aide script surveillance temperature CPU
@Postmortem : Bonjour et merci a toi, c'est pile poil ;-) ce qu'il me fallait...je peux replonger dedans ;-)
Tombé dans l'informatique étant petit, j'en ai fait mon métier. Utilisateur d'Ubuntu depuis novembre 2006, actuellement sous 20.04 x64 (Que d'évolution
depuis Dapper Drake ! Ça rajeunit pas ^^^).
Hors ligne
#17 Le 19/11/2013, à 20:54
- toutafai
Re : [Résolu] aide script surveillance temperature CPU
Sujet Re Résolu, merci a tous.
PS : J'ai édité mon 1 er message avec la solution... si vous voulez vous rappeler vos 1 ers bash ;-) j'attends d'avance en retour vos taquineries justifiées et méritées
Tombé dans l'informatique étant petit, j'en ai fait mon métier. Utilisateur d'Ubuntu depuis novembre 2006, actuellement sous 20.04 x64 (Que d'évolution
depuis Dapper Drake ! Ça rajeunit pas ^^^).
Hors ligne
#18 Le 19/11/2013, à 22:03
- Olivier_Dev
Re : [Résolu] aide script surveillance temperature CPU
Bonsoir
interessant, en revanche comment faire lorsque acpi n'est pas installé ?
et que /proc/acpi/ibm/fan n'éxiste pas ?
pour ma part les infos temperature se trouvent dans /sys/class/hwmon/hwmon0/, dans quel fichier systeme ecrire pour activer le ventilateur ?
merci d'avance
Hors ligne
#19 Le 19/11/2013, à 23:00
- toutafai
Re : [Résolu] aide script surveillance temperature CPU
Oui, cette solutions est spécifique au portable IBM Thinkpad
pour les outils acpi :
sudo apt-get install acpi
pour le fichier (dans mon cas) /proc/acpi/ibm/fan la aussi c'est spécifiques au ibm, mais c'est courant de trouver (pas forcement le meme nom et/ou le meme chemin) cela chez d'autre construcyteur de pc, en fait cela depend de sa gestion acpi. Dans mon cas, j'avais trouvé cette info en vouillant un peu la doc sur la gestion des ventilo et de la temperature cpu, une piste a creuser en cherchant avec la marque modele de ton pc.
Tombé dans l'informatique étant petit, j'en ai fait mon métier. Utilisateur d'Ubuntu depuis novembre 2006, actuellement sous 20.04 x64 (Que d'évolution
depuis Dapper Drake ! Ça rajeunit pas ^^^).
Hors ligne