Mes scripts sous Linux
"Mémoire" de scripts divers
A noter : le script raid de ce blog, qui n'est pas dans cette section.
Régulation de la vitesse des processeurs
Ce script tout bête permet de régler assez efficacement la vitesse du/des microprocesseurs, dans les cas desespérés.
Attention, j'ai lu qquepart que modifier les throttling pouvait être à l'origine de problèmes. Depuis des moi que ca tourne sur l'un de mes portables, je n'ai pas à me plaindre de quoique ce soit.
Ce script permet à mon pauvre portable HP de ne plus faire huler ses ventilateurs.
La vitesse de ceux ci est réduite de 2 niveaux (et ca fait du bien aux oreilles).
while [ 1 == 1 ]; do load_avg=$(cat /proc/loadavg | sed "s/[^.]*\.\([^ ]*\).*/\1/") load_avg_d=$(cat /proc/loadavg | sed "s/\([^.]*\).*/\1/") if [ "$load_avg_d" != "0" ]; then cpu_use=99 else cpu_use=$load_avg fi cpu_use=$(top -b -n 1 | grep -A 1 PID | tail -1 | awk '{print $9}') echo "use=$cpu_use ($load_avg_d,$load_avg)" t=T7 cd /proc/acpi/processor for cpu in CPU?; do cd /proc/acpi/processor/$cpu throttling=$(cat throttling | grep "%" | sed 's/%//' | sed 's/://g' | sed 's/*//' | sed 's/^ *//' | sed 's/ */ /') for t in $throttling; do if [ "$p" == "" ]; then p=$t else # echo "cpu_use=$cpu_use t=$t" if [ "$cpu_use" -lt "$t" ]; then thr=$p fi p="" fi done echo "$cpu T=$thr" echo "$thr" > /proc/acpi/processor/$cpu/throttling done sleep 1 clear done
Personnellement, je démarre ce script en aveugle lors de chaque boot, depuis le rc.local
Il s'agit en fait du PC de ma femme, qui ne s'est pas rendu compte de la manoeuvre.
Le défaut de ce script est le temps de latence quand on sollicite le PC : environs 1 seconde.
Ce qui est bien trop pour moi, mais idéal pour ma femme :-)
Le ralentissement est très peu sensible pour une utilisation modeste du PC. Pour Internet, ça fonctionne bien.
Voici le résultat après 10 minutes de fonctionnement du script (je suis parti de 82 / 83 °C)
coretemp-isa-0000
Adapter: ISA adapter
Core 0: +69°C (high = +100°C)
coretemp-isa-0001
Adapter: ISA adapter
Core 1: +69°C (high = +100°C)
Note sur mon nouvel ACER, pas besoin de ce script, les procs sont froids (38 deg)
Sur l'HP DV6000ef de ma femme, ce script économise les oreilles et les CPUs
Duplication stdout vers un fichier en bash (like tee)
Il peut être utile qu'un script duplique sa sortie vers un fichier simultanément.
Cela évite de (penser à) utiliser la commande tee
$ monscript.sh | tee script.log
Ajouter cette ligne en début du script fait le job:
#!/bin/bash
exec > >(tee -ia script.log)
... echo ... etc.
Autre solution plus facile à mémoriser, encapsuler tout le script et utiliser tee
#!/bin/bash
{
echo one
echo two
} | tee script.log