Arresto automatico per temperature alte

Il ritrovo della comunità dove confrontarsi e discutere sulle notizie dal mondo dell'informatica, di Ubuntu e di tutto quello che la riguarda, novità, pettegolezzi e quant'altro.
Avatar utente
Ylian89
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 275
Iscrizione: mercoledì 5 maggio 2010, 11:35
Desktop: LXQT
Distribuzione: Debian Testing
Sesso: Maschile
Località: Bari

Re: Arresto automatico per temperature alte

Messaggio da Ylian89 »

Actarus5 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4767198#p4767198][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Non l'ho mai usato per questo scopo ma so che lm-sensors supporta gli "alarms" per questo genere di cose, potresti provare a darci uno sguardo!
Grazie mille! Ora controllo
notsure
Prode Principiante
Messaggi: 53
Iscrizione: mercoledì 20 maggio 2015, 9:42
Desktop: Unity
Distribuzione: Ubuntu 14.04.2 LTS i686
Sesso: Maschile

Re: Arresto automatico per temperature alte

Messaggio da notsure »

Si può costruire un semplice script bash, basta fornirgli le giuste variabili;
come prima variabile abbiamo bisogno di leggere la temperatura del processore da sensors.
Per me basta un

Codice: Seleziona tutto

sensors | sed -n '12{p;q}' | cut -c16-17
che reindirizza l'output di sensors su sed, prendendone solo la 12 riga, che viene a sua volta reindirizzata a cut che ne prende solo i caratteri 16 e 17.
Partendo da questo semplice comando è facile capire come adattarlo al proprio output di sensors, quindi variare riga e caratteri in base ai dati che si vuole dare in pasto allo script.
La seconda variabile da impostare sarà la temperatura alla quale il PC dovrà spegnersi automaticamente, per me è 85°C.
Con un while true avvio in loop infinito un ciclo if che confronta ogni n secondi, per me 30 (sleep 30), la temperatura del processore con quella di spegnimento che ho impostato, e, quando è uguale o superiore (if [ $VAR1 -ge $VAR2 ]), manderà un xmessage di spegnimento e avvierà uno shutdown che avverrà dopo 2 minuti (shutdown è avviabile da super user, quindi bisogna fornire la propria password allo script); quando la temperatura è inferiore la stamperà a schermo.
Questo è lo script completo:

Codice: Seleziona tutto

#!/bin/bash
temp=`sensors | sed -n '12{p;q}' | cut -c16-17`
maxtemp=85

while true
 do
  if [ $temp -ge $maxtemp ];
   then
    xmessage  "Alert! Temp above 85. System halting in 2 minutes"
    echo password | sudo /sbin/shutdown -h +2
   else
    sensors | sed -n '12{p;q}' | cut -c16-17
  fi
sleep 30
done
Questa è la via più semplice che ho trovato, ma si potrebbe migliorare tantissimo, per esempio inserendo lo script nell'init, così da avviarlo automaticamente e senza il bisogno di avere la password in chiaro in uno script; oppure se si hanno più processori si potrebbero controllare entrambi; o ancora, prima di effettuare lo shutdown si potrebbe effettuare un altro controllo per verificare che la temperatura non sia scesa sotto la soglia; o identificare il processo che consuma più CPU e killarlo automaticamente.
Invito gli utenti a continuare le modifiche dello script, scrivendole in questa discussione.
Welcome to Carl's Jr. Would you like to try our EXTRA BIG ASS TACO? Now with more MOLECULES!
Toshio
Prode Principiante
Messaggi: 153
Iscrizione: mercoledì 30 aprile 2014, 18:01

Re: Arresto automatico per temperature alte

Messaggio da Toshio »

Molto interessante (non ho idea di cosa hai scritto :nono: :D ) ma sarebbe meglio aprire una nuova discussione in programmazione con titolo chiaro Script allarme per lm-sensors o simile, sarà anche più evidente. Qui in bar ubuntu va a finire che si "perde".
notsure
Prode Principiante
Messaggi: 53
Iscrizione: mercoledì 20 maggio 2015, 9:42
Desktop: Unity
Distribuzione: Ubuntu 14.04.2 LTS i686
Sesso: Maschile

Re: Arresto automatico per temperature alte

Messaggio da notsure »

Io credo che questa invece sia proprio una discussione da bar, da fare magari davanti ad una birra ghiacciata.
@Toshio prova ad apportare le modifiche che ti servono e posta il tuo script qui, così lo confronteremo con altri.
Welcome to Carl's Jr. Would you like to try our EXTRA BIG ASS TACO? Now with more MOLECULES!
Toshio
Prode Principiante
Messaggi: 153
Iscrizione: mercoledì 30 aprile 2014, 18:01

Re: Arresto automatico per temperature alte

Messaggio da Toshio »

notsure ha scritto:Io credo che questa invece sia proprio una discussione da bar,
Forse per te e per coloro che hanno cognizioni di programmazione e sanno come si scrivono gli script. La birra ce l'ho proprio qui in mano, fidati... :D .
Il punto è che a parte quei 5 o 6 utenti cha sono intervenuti e qualcun'altro cha "passa" per caso, non la vedrà nessuno. Proprio perchè interessante e utile sarebbe il caso avesse più visibilità nella sezione adatta e con un titolo che spieghi di cosa si tratta.
Avatar utente
Actarus5
Prode Principiante
Messaggi: 220
Iscrizione: mercoledì 3 luglio 2013, 17:15
Desktop: Mate
Distribuzione: Fedora
Località: Abutalabashuneba

Re: Arresto automatico per temperature alte

Messaggio da Actarus5 »

notsure [url=http://forum.ubuntu-it.org/viewtopic.php?p=4767424#p4767424][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Io credo che questa invece sia proprio una discussione da bar, da fare magari davanti ad una birra ghiacciata.
@Toshio prova ad apportare le modifiche che ti servono e posta il tuo script qui, così lo confronteremo con altri.
In effetti sarebbe interessante come argomento, potremmo provare a fare un'estensione per Gnome o un programma con GUI per gestire questa cosa qui.
"An extremely helpful console message: “SPANK! SPANK! SPANK! Naughty programmer!”. Really, I’m not joking about that one."
notsure
Prode Principiante
Messaggi: 53
Iscrizione: mercoledì 20 maggio 2015, 9:42
Desktop: Unity
Distribuzione: Ubuntu 14.04.2 LTS i686
Sesso: Maschile

Re: Arresto automatico per temperature alte

Messaggio da notsure »

Con notify-send e zenity non sarebbe per niente difficile da fare
Welcome to Carl's Jr. Would you like to try our EXTRA BIG ASS TACO? Now with more MOLECULES!
Avatar utente
Actarus5
Prode Principiante
Messaggi: 220
Iscrizione: mercoledì 3 luglio 2013, 17:15
Desktop: Mate
Distribuzione: Fedora
Località: Abutalabashuneba

Re: Arresto automatico per temperature alte

Messaggio da Actarus5 »

Comunque le altre info importanti si trovano in /sys/class/hwmon stando alla documentazione: https://www.kernel.org/doc/Documentatio ... -interface .
Per trovare quelle del processore bisogna controllare il file name nelle 3 subdirectory ( hwmon0 hwmon1 hwmon2) e vedere qual è quello che riguarda il processore ( deve esserci scritto coretemp)
"An extremely helpful console message: “SPANK! SPANK! SPANK! Naughty programmer!”. Really, I’m not joking about that one."
notsure
Prode Principiante
Messaggi: 53
Iscrizione: mercoledì 20 maggio 2015, 9:42
Desktop: Unity
Distribuzione: Ubuntu 14.04.2 LTS i686
Sesso: Maschile

Re: Arresto automatico per temperature alte

Messaggio da notsure »

@Actarus5, proponi le tue modifiche allo script, vediamo un po' cosa ne esce fuori. Che dati vuoi raccogliere da hwmon?
Welcome to Carl's Jr. Would you like to try our EXTRA BIG ASS TACO? Now with more MOLECULES!
Avatar utente
Actarus5
Prode Principiante
Messaggi: 220
Iscrizione: mercoledì 3 luglio 2013, 17:15
Desktop: Mate
Distribuzione: Fedora
Località: Abutalabashuneba

Re: Arresto automatico per temperature alte

Messaggio da Actarus5 »

Beh su hwmon trovi sia la temperatura dei singoli core ( sarebbe interessante mettere un'opzione per mostrarla) che quella della scheda madre, in generale secondo me è una buona idea leggere tutto da hwmon perché se con le prossime release dovesse cambiare l'output di sensors lo script resterebbe comunque usabile senza cambiare nulla.
Il fatto è che io con bash sono davvero una ciofeca, la mia conoscenza si limita alle cose base per sopravvivere usando il terminale; mi è utile nel caso in cui mi muoia il DE perché potrei sempre riuscire a recuperare il sistema da riga di comando :D
"An extremely helpful console message: “SPANK! SPANK! SPANK! Naughty programmer!”. Really, I’m not joking about that one."
notsure
Prode Principiante
Messaggi: 53
Iscrizione: mercoledì 20 maggio 2015, 9:42
Desktop: Unity
Distribuzione: Ubuntu 14.04.2 LTS i686
Sesso: Maschile

Re: Arresto automatico per temperature alte

Messaggio da notsure »

Actarus5 ha scritto:se con le prossime release dovesse cambiare l'output di sensors lo script resterebbe comunque usabile senza cambiare nulla.
Non è detto che l'output di hwmon rimarrebbe uguale, anzi, bisogna partire dal presupposto che ogni scheda madre e processore crea file diversi, già con la versione attuale.
Comunque è semplice da bash chiedere al sistema quale sia la cartella interessata

Codice: Seleziona tutto

sudo -s
grep --exclude-dir={subsystem,power,driver} -Rx "coretemp" /sys/class/hwmon/hwmon*
Io rimarrei su sensors, se non ci sono problemi di riconoscimento delle temperature.
Da questo post ho ricavato questo comando

Codice: Seleziona tutto

sensors | grep -Pio 'Core [01]:.*?\+\K[0-9]+'
che sembra essere molto più comodo dell'originale, anche se richiede comunque lo studio dell'output di sensors per capire quali sono le temperature da leggere, quindi in fin dei conti non cambia molto.
Penso che questo script debba adattarsi per ogni utente che voglia utilizzarlo, basta spiegare tutti i passaggi in maniera semplice.
Welcome to Carl's Jr. Would you like to try our EXTRA BIG ASS TACO? Now with more MOLECULES!
Scrivi risposta

Ritorna a “Bar Ubuntu”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti