Pagina 1 di 2
Arrestare il sistema se temperatura >tot [RISOLTO]
Inviato: mercoledì 9 giugno 2010, 19:01
da Clefairy
Salve a tutti.
Dovrei arginare una falla del bios: non ha un sistema di controllo della temperatura che spenga il pc se la temperatura raggiunge livelli troppo alti.
Come posso fare?
Re: Arrestare il sistema se temperatura >tot
Inviato: mercoledì 9 giugno 2010, 20:59
da crunch
fai verifcare la temperatura da uno script in background, per esempio estraendola dall'output di sensors
Re: Arrestare il sistema se temperatura >tot
Inviato: mercoledì 9 giugno 2010, 21:20
da Clefairy
Fin li ci sono.
Vorrei che il pc si spegnesse se la temperatura raggiunge livelli critici, ed io non sono presente.
Ad esempio se si bloccasse la ventola dellla cpu, la temperatura salirebbe rapidamente.
Re: Arrestare il sistema se temperatura >tot
Inviato: mercoledì 9 giugno 2010, 21:25
da crunch
no, allora mi sa che non ci sei poi tanto.....
ho detto in background

Re: Arrestare il sistema se temperatura >tot
Inviato: mercoledì 9 giugno 2010, 21:35
da Clefairy
Ci sono a sensor, io vedo la temperatura...
Come dovrei procedere?
Re: Arrestare il sistema se temperatura >tot
Inviato: mercoledì 9 giugno 2010, 22:12
da zeek
Con un codice così:
Codice: Seleziona tutto
#!/bin/bash
sensors=$(sensors|grep Core|awk '{print $3}'|sed 's/[+,°,C,.]//g'|sed s/.$//g;);
for temp in ${sensors}; do
if [ ${temp} -gt 100 ]; then
echo pio foco;
fi
done
brutto, ma proprio brutto, ottieni che lo script dice 'pio foco' se la temperatura di uno degli n core del tuo piccì sale sopra 100.
Ti basta sostituire echo pio foco; con
facendolo girare con cron ogni, ad esempio, 2 minuti, ottieni che il piccì si spenge se sale oltre i 100 gradi.
Però credo che due minuti siano parecchiotti...
edit: aspetta un attimo :P
Re: Arrestare il sistema se temperatura >tot
Inviato: mercoledì 9 giugno 2010, 22:21
da crunch
prova a far girare in rc.local questo
Codice: Seleziona tutto
#!/bin/bash
while [ -n \"FOREVER\" ]; do
sensors | head -18 | tail -1 | cut -c15-16 > file_temp
a=$(cat /home/crunch/file_temp)
if ((a > 70)); then sudo shutdown -h
else echo $(cat /home/crunch/file_temp) > /home/crunch/log_temp
fi
sleep 60
done
ovviamente dovrai adattare il comando sensors al tuo output e la temperatura di sistema a quella che ti pare
:P
Re: Arrestare il sistema se temperatura >tot
Inviato: mercoledì 9 giugno 2010, 22:29
da zeek
Ho modificato il posto sopra..
Volevo aggiungere una cosina: puoi usare cron, ma anche il metodo di crunch (loop infinito e un piccolo sleep).
@crunch: perché scrivi la temperatura su un file invece che direttamente in una variabile?
Re: Arrestare il sistema se temperatura >tot
Inviato: mercoledì 9 giugno 2010, 22:36
da crunch
e' una mia mania, lasciare quante piu tracce possibili di cio che succede nel pc

Re: Arrestare il sistema se temperatura >tot
Inviato: giovedì 10 giugno 2010, 18:50
da Clefairy
Grazie per i consigli.
Data la mia niubbezza, ho capito a metà. :-[
Nel mio /etc ci sono due rc.local, uno in /etc e uno in /etc/init.d: quale uso?
Questo è il risultato di sensors: come lo greppo?
Codice: Seleziona tutto
:~$ sensors
atk0110-acpi-0
Adapter: ACPI interface
Vcore Voltage: +1.24 V (min = +0.80 V, max = +1.60 V)
+3.3 Voltage: +3.36 V (min = +2.97 V, max = +3.63 V)
+5 Voltage: +5.04 V (min = +4.50 V, max = +5.50 V)
+12 Voltage: +12.66 V (min = +10.20 V, max = +13.80 V)
CPU FAN Speed: 0 RPM (min = 600 RPM)
CHASSIS FAN 1 Speed: 0 RPM (min = 600 RPM)
CHASSIS2 FAN Speed: 0 RPM (min = 600 RPM)
POWER FAN Speed: 0 RPM (min = 600 RPM)
CPU Temperature: +32.0°C (high = +60.0°C, crit = +95.0°C)
MB Temperature: +35.0°C (high = +45.0°C, crit = +95.0°C)
coretemp-isa-0000
Adapter: ISA adapter
Core 0: +45.0°C (high = +76.0°C, crit = +100.0°C)
coretemp-isa-0001
Adapter: ISA adapter
Core 1: +45.0°C (high = +76.0°C, crit = +100.0°C)
Credo che controllare la temperatura ogni 15 o 20 secondi possa essere una soluzione efficace.
Quale delle due soluzioni è la meno impegnativa per la cpu?
Si potrebbe sviluppare un progetto: creare un sw che scarichi i pacchetti necessari e configuri lo script di controllo della temperatura.
Cosa ne dite?
Re: Arrestare il sistema se temperatura >tot
Inviato: giovedì 10 giugno 2010, 19:54
da zeek
Intanto guarda quale delle due ti funziona.
Poi, sono script talmente tanto piccoli che non credo ci sia un impiego così diverso della cpu.
Al massimo uno usa il disco l'altro no, ma anche qui: c'è da specificare che è talmente minimo l'utilizzo dello stesso che non possa provocare rallentamenti o appesantimenti, inoltre scrivendo, hai traccia di ciò che succede.
Copia lo script che ho postato così com'è sostituendo 100 con 10, rendilo eseguibile (chmod +x nomeFile) ed eseguilo: ./nomeFile
Copia poi questo:
Codice: Seleziona tutto
#!/bin/bash
while [ -n \"FOREVER\" ]; do
sensors | head -18 | tail -1 | cut -c15-16 > file_temp
a=$(cat /home/${USER}/file_temp)
if ((a > 10)); then echo pio foco
else echo $(cat /home/${USER}/file_temp) > /home/${USER}/log_temp
fi
sleep 60
done
rendilo eseguibile (chmod +x nomeFile) ed eseguilo: ./nomeFile
Posta il risultato di entrambi gli script: entrambi dovrebbero restituire pio foco, altrimenti non funzionano come dovrebbero.
Re: Arrestare il sistema se temperatura >tot
Inviato: giovedì 10 giugno 2010, 23:00
da crunch
Il comando sensors dovrebbe essere questo
sensors | head -11 | tail -1 | cut -c23-24
che dovrebbe restituire '32', mentre il valore limite e' 95.
Poi copi lo script in /sbin e scrivi in /etc/rc.local
/sbin/nome_script
prima di exit 0
poi riavvia
lo script finale dovrebbe essere questo
Codice: Seleziona tutto
#!/bin/bash
while [ -n \"FOREVER\" ]; do
sensors | head -11 | tail -1 | cut -c23-24 > /home/crunch/file_temp
a=$(cat /home/crunch/file_temp)
if ((a > 95)); then sudo shutdown -h now
else echo $(cat /home/crunch/file_temp) > /home/crunch/log_temp
fi
sleep 60
done
Re: Arrestare il sistema se temperatura >tot
Inviato: sabato 12 giugno 2010, 19:46
da Clefairy
Eccomi qua, scusate il ritardo. Per quanto riguarda gli script di zeek:
1.sh
Codice: Seleziona tutto
#!/bin/bash
sensors=$(sensors|grep Core|awk '{print $3}'|sed 's/[+,°,C,.]//g'|sed s/.$//g;);
for temp in ${sensors}; do
if [ ${temp} -gt 10 ]; then
echo pio foco;
fi
done
2.sh
Codice: Seleziona tutto
#!/bin/bash
while [ -n \"FOREVER\" ]; do
sensors | head -18 | tail -1 | cut -c15-16 > file_temp
a=$(cat /home/${USER}/file_temp)
if ((a > 10)); then echo pio foco
else echo $(cat /home/${USER}/file_temp) > /home/${USER}/log_temp
fi
sleep 60
done
Codice: Seleziona tutto
:~/Scrivania$ ./2.sh
cat: /home/clef/file_temp: Nessun file o directory
cat: /home/clef/file_temp: Nessun file o directory
cat: /home/clef/file_temp: Nessun file o directory
Aggiustando i percorsi in /Scrivania non succede nulla, i due files rimangono vuoti.
Codice: Seleziona tutto
#!/bin/bash
while [ -n \"FOREVER\" ]; do
sensors | head -18 | tail -1 | cut -c15-16 > /home/${USER}/Scrivania/file_temp
a=$(cat /home/${USER}/Scrivania/file_temp)
if ((a > 10)); then echo pio foco
else echo $(cat /home/${USER}/Scrivania/file_temp) > /home/${USER}/Scrivania/log_temp
fi
sleep 60
done
Re: Arrestare il sistema se temperatura >tot
Inviato: sabato 12 giugno 2010, 21:24
da zeek
Allora aspetta, crunch ha ripostato lo script per adattarlo all'output del tuo sensors, quindi devi utilizzare se mai il secondo che ha postato.
Ora che so che il mio script funziona anche con il tuo sensors, ti posto lo script completo:
Codice: Seleziona tutto
#!/bin/bash
while [ 1 ]; do
sensors=$(sensors|grep Core|awk '{print $3}'|sed 's/[+,°,C,.]//g'|sed s/.$//g;);
for temp in ${sensors}; do
if [ ${temp} -gt 90 ]; then
sudo shutdown -h now;
fi
done
sleep 5;
done
Ora puoi copiarlo in un file, renderlo eseguibile ed inserire in /etc/rc.local
/percorso/del/file &
la & alla fine serve per lanciare lo script in background.
Altrimenti puoi lanciarlo con cron...
La stessa cosa puoi fare con lo script di crunch, seguendo il suo post precedente.
edit: comunque sei sicura che il tuo bios non faccia già questa cosa? Mi sembra strano.
Devi cambiare lo script di crunch, se vuoi usare quello, sostituendo il suo nome utente con il tuo.
Spero di esserti stato utile.
Ciao!
Re: Arrestare il sistema se temperatura >tot
Inviato: sabato 12 giugno 2010, 23:03
da einstein1969
Scusate ma la sensor-applet non implementa gia' il controllo?
Re: Arrestare il sistema se temperatura >tot
Inviato: domenica 13 giugno 2010, 10:10
da Clefairy
einstein1969 ha scritto:
Scusate ma la sensor-applet non implementa gia' il controllo?
Purtroppo no, la proprietà "sensor limit" influisce solo sull'ampiezza del grafico dell'icona.
zeek ha scritto:
Ora che so che il mio script funziona anche con il tuo sensors, ti posto lo script completo:
Codice: Seleziona tutto
#!/bin/bash
while [ 1 ]; do
sensors=$(sensors|grep Core|awk '{print $3}'|sed 's/[+,°,C,.]//g'|sed s/.$//g;);
for temp in ${sensors}; do
if [ ${temp} -gt 90 ]; then
sudo shutdown -h now;
fi
done
sleep 5;
done
Ora puoi copiarlo in un file, renderlo eseguibile ed inserire in /etc/rc.local
/percorso/del/file &
la & alla fine serve per lanciare lo script in background.
Ho cambiato la temperatura a 53 gradi, per provare, ma non funziona.
Se lo faccio girare nel terminale, quando il core raggiunge i 53 gradi, mi viene chiesta la password di amministratore.
Re: Arrestare il sistema se temperatura >tot
Inviato: domenica 13 giugno 2010, 12:24
da einstein1969
Clefairy ha scritto:
einstein1969 ha scritto:
Scusate ma la sensor-applet non implementa gia' il controllo?
Purtroppo no, la proprietà "sensor limit" influisce solo sull'ampiezza del grafico dell'icona.
Ho cambiato la temperatura a 53 gradi, per provare, ma non funziona.
Se lo faccio girare nel terminale, quando il core raggiunge i 53 gradi, mi viene chiesta la password di amministratore.
devi attivare Alarm
gia' con alarm ti compare un messaggio come questo superato il limite massimo. E nel campo "high alarm command" puoi inserire il comando di shutdown (per esempio preceduto da uno sleep di x secondi)
Re: Arrestare il sistema se temperatura >tot
Inviato: domenica 13 giugno 2010, 13:35
da zeek
Clefairy ha scritto:
zeek ha scritto:
Ora che so che il mio script funziona anche con il tuo sensors, ti posto lo script completo:
Codice: Seleziona tutto
#!/bin/bash
while [ 1 ]; do
sensors=$(sensors|grep Core|awk '{print $3}'|sed 's/[+,°,C,.]//g'|sed s/.$//g;);
for temp in ${sensors}; do
if [ ${temp} -gt 90 ]; then
sudo shutdown -h now;
fi
done
sleep 5;
done
Ora puoi copiarlo in un file, renderlo eseguibile ed inserire in /etc/rc.local
/percorso/del/file &
la & alla fine serve per lanciare lo script in background.
Ho cambiato la temperatura a 53 gradi, per provare, ma non funziona.
Se lo faccio girare nel terminale, quando il core raggiunge i 53 gradi, mi viene chiesta la password di amministratore.
allora:
/etc/rc.local viene eseguito da root all'avvio del sistema, questo significa che una volta piazzata la chiamata allo script in quel file, devi riavviare, e fare il test.
Se vuoi lanciaro a mano, devi lanciarlo con sudo.
Per quanto riguarda la possibilità di farlo con le applet, non lo sapevo! Certo se si può fare è meglio non utilizzare questi script fatti in casa.
Re: Arrestare il sistema se temperatura >tot
Inviato: domenica 13 giugno 2010, 16:05
da Clefairy
einstein1969 ha scritto:
Clefairy ha scritto:
einstein1969 ha scritto:
Scusate ma la sensor-applet non implementa gia' il controllo?
Purtroppo no, la proprietà "sensor limit" influisce solo sull'ampiezza del grafico dell'icona.
Ho cambiato la temperatura a 53 gradi, per provare, ma non funziona.
Se lo faccio girare nel terminale, quando il core raggiunge i 53 gradi, mi viene chiesta la password di amministratore.
devi attivare Alarm
gia' con alarm ti compare un messaggio come questo superato il limite massimo. E nel campo "high alarm command" puoi inserire il comando di shutdown (per esempio preceduto da uno sleep di x secondi)
>:( Era li che mi guardava... :-[
E che comando dovrei inserire?
Ora che ho impostato l'allarme a temperatura 53, se la raggiunge mi appare un messaggio di notifica, ma non sono riuscita a far spegnere il pc.
Ho provato con i vari comandi precedenti, shutdown, shutdown now, shutdown -h now, sudo shutdown -h now...
zeek ha scritto:
/etc/rc.local viene eseguito da root all'avvio del sistema, questo significa che una volta piazzata la chiamata allo script in quel file, devi riavviare, e fare il test.
Errore di scrittura in rc.local, funziona! (b2b)
Re: Arrestare il sistema se temperatura >tot
Inviato: domenica 13 giugno 2010, 18:53
da crunch
@ Clefairy
Secondo me non ti conviene lasciar gestire una operazione cosi' delicata ed importante ad una applet di Gnome
Meglio lo script che ti dicevo o in rc.local o come gia' suggerito in background col comando finale & lanciato con sudo