+70°C > reboot

Bonsoir ou bonjour.
Je suis un peux agacé de regarder à chaque fois ma commande sensors
Pour vérifier la température de mon CPU

J’ai les bases en programmation variables, opérations, conditions, boucles

Auriez vous un manuel pour que je puisse développer ma petite api ?

Ps : mon processeur ne dépasse jamais les 50 °C. Je ne veux pas qu’il dépasse au cas ou 70 °C, redémarrage immédiat.
C’est également pour m’amuser je sais qu’il y’a les options dans le bios :grinning:

#!/bin/bash
sensors

acpitz-virtual-0
Adapter: Virtual device
temp1:        +50.0°C  (crit = +115.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +40.0°C  (high = +90.0°C, crit = +90.0°C)
Core 2:       +47.0°C  (high = +90.0°C, crit = +90.0°C)

// Je veux enregistrer temp1
/// tester temp1
//// Si temp1 < 70°C --> rien exit0
///// Sinon --> reboot

Après quelques recherches il existe un moyen d’avoir la température directement du GPU dans
/sys/class/hwmon/hwmon0/*input

temperature_CPU=0
temperature_CPU=$(cat /sys/class/thermal/thermal_zone*/temp)
mille=1000
valeur_Humaine=$temperature_CPU/$mille
echo $valeur_Humaine
50000/1000 

La dernière Ligne :face_with_symbols_over_mouth:
$valeur_Humaine est en chaînes de caractères

salut
c’est apparemment une histoire de syntaxe

root@debian:~# temperature_CPU=$(cat /sys/class/thermal/thermal_zone*/temp)
root@debian:~# echo $temperature_CPU
64000
root@debian:~# temp=$(($temperature_CPU/1000))
root@debian:~# echo $temp
64
root@debian:~#

j’affiche la température directement dans la barre du bureau Gnome

1 J'aime

Merci, je suis entrain de faire un montage vidéo.
Je ferais, les conditions par la suite :slight_smile:

D’après vous ? Es-ce que cela fonctionnerais ?

#!/bin/bash
temperature_CPU=0, t_CPU=0
temperature_CPU=$(cat /sys/class/thermal/thermal_zone*/temp)
t_CPU=$((temperature_CPU/1000))

if [t_CPU < 70]
then
        while [t_cpu > 70]
        do
                temperature_CPU=0, t_CPU=0
                temperature_CPU=$(cat /sys/class/thermal/thermal_zone*/temp)
                t_CPU=$((temperature_CPU/1000))
        done
else
        reboot

A la limite, tu testes avec une valeur plus basse, et si ça reboote tu auras ta réponse ?
Sauf qu’au reboot, ta température sera idem, donc AMA, il vaut mieux faire un halt, pour éviter du reboot en boucle.
Et tu peux aussi regarder du coté de fancontrol, pour éventuellement pousser les ventilos à fond avant d’atteindre cette température (et les ralentir si ça redescend).

C’étais juste pour voir si le code est bon, encore merci pour l’aide. :slight_smile:

J’aime autant débugger que programmer :grinning:
Reste bloqué dans la boucle :confused:

#!/bin/bash
temperature_CPU=0 t_CPU=0 t_MAX=30
temperature_CPU=$(cat /sys/class/thermal/thermal_zone*/temp)
 t_CPU=$((temperature_CPU/1000))

if [ $t_MAX > $t_CPU ]
then
while [ $t_MAX > $t_CPU ]; do
    	temperature_CPU=$(cat 
        /sys/class/thermal/thermal_zone*/temp)
    	t_CPU=$((temperature_CPU/1000))
done

else
	echo "chaud!"
fi

Normale, ta boucle tu la lancera indéfiniment tu n’a pas de sortie.

Place ta boucle en amont et selon le résultat tu la relances ou tu sort.

1 J'aime

image

1 J'aime

clochette
Normale, ta boucle tu la lancera indéfiniment tu n’a pas de sortie.
Place ta boucle en amont et selon le résultat tu la relances ou tu sort.

Merci :grinning:

mattotop

:joy:

Me re voilà :grin:
Mon

if [ $t_MAX > $t_CPU ]

Est toujours valide quelques soit la température.
Je n’es pas changé le code, Pour moi si t_MAX = 30 > t_CPU = 40
Le if n’est pas valide, mes pourtant … Le programme rentre dans la boucle :confused:

Bonjour

Utilise plutôt
l’opérateur arithmétique binaire -gt (greater than)

if [ $t_MAX -gt $t_CPU ]

Même chose pour :

while [ $t_MAX -gt $t_CPU ]; do

Voir la page man de bash concernant ces opérateurs
en lançant la ligne de commande suivante :

man --pager='less -p "arg1 OP arg2"' bash
1 J'aime

Merci :slight_smile:

#!/bin/bash
#set -x
temperature_CPU=$(cat /sys/class/thermal/thermal_zone*/temp)
t_CPU=$((temperature_CPU/1000))
t_MAX=62

while [ $t_MAX -gt $t_CPU ]; 
do
   temperature_CPU=$(cat /sys/class/thermal/thermal_zone*/temp)
   t_CPU=$((temperature_CPU/1000))
   echo 'cpu froid '$t_CPU
   sleep 60
done
echo "chaud!"
:~$ bash temp.sh
cpu froid 59
cpu froid 62
chaud!
 sensors
k10temp-pci-00c3
Adapter: PCI adapter
CPU:          +70.0°C  (high = +70.0°C)
                       (crit = +115.5°C, hyst = +110.5°C)

acpitz-acpi-0
Adapter: ACPI interface
ACPI-TZ:      +70.0°C  

radeon-pci-0200
Adapter: PCI adapter
Radeon:       +68.0°C  (crit = +120.0°C, hyst = +90.0°C)
bash temp.sh
chaud!

https://abs.traduc.org/abs-5.3-fr/index.html

1 J'aime

35 chapitres easy peasy lemon squeezy

page mis en favoris :wink: