#1 Le 17/05/2024, à 14:42
- omorin
Petit script pour gérer le CPU sous Xubuntu
Bonjour,
Cpu-Mode est un petit script pour gérer la performance et la consommation du CPU sous Xubuntu.
A partir des versions récentes, la sécurité obligeait à une élévation à chaque utilisation de commande comme « cpupower » aussi bien en ligne de commande qu’avec des utilitaires graphiques.
Je me suis donc posé la question d’écrire un petit utilitaire le plus léger possible et simple à installer.
Je l’ai testé sous Xubuntu 23.10 puis sous 24.04 avec mes deux portables Lenovo, un vénérable T400 qui me sert de cobaye, et mon fidèle X240.
Tout est publié le "projet" ici : https://sourceforge.net/projects/cpu-mode/
N'hésitez pas à commenter (avec douceur...).
Dernière modification par omorin (Le 17/05/2024, à 14:43)
Hors ligne
#2 Le 18/05/2024, à 11:43
- nany
Re : Petit script pour gérer le CPU sous Xubuntu
Bonjour,
Testé dans Ubuntu 22.04 (impossible de tester Xubuntu dans VirtualBox).
Il faut y installer a minima linux-tools-generic-hwe-22.04.
Après passage entre mes mains,
#!/bin/bash
declare -r delai=10 largeur=300 hauteur=275
declare -r titre='Mode CPU actuel :' texte='Veuillez indiquer le nouveau mode' colonne='Mode'
gov_courrant=$(cpupower frequency-info -p | grep 'The governor ')
gov_courrant=${gov_courrant#*\"}
gov_courrant=${gov_courrant%\"*}
gov=$(cpupower frequency-info -g | grep 'available cpufreq governors:')
gov=${gov#*:}
gov=$(tr " " "\n" <<< $gov | sort | tr "\n" " ")
mode=$(zenity --list --title="$titre $gov_courrant" --text=$text --column=$colonne $gov --timeout=$delai --width=$largeur --height=$hauteur)
test -z $mode || ( com="cpupower frequency-set -g $mode" ; sudo $com)
est devenu
#!/bin/bash
declare -r delai="10" largeur="300" hauteur="275"
declare -r titre="Mode CPU(s) actuel(s) :"
declare -r texte="Veuillez indiquer le nouveau mode." colonne="Mode"
gov_courrant=$(cpupower frequency-info -p | grep -oP 'The governor "\K[^"]+')
gov=$(sort <(printf "%s\n" $(cpupower frequency-info -g |
sed "/analyzing/d;s/^.*: //;s/$gov_courrant//")) | tr "\n" " ")
mode=$(zenity --list \
--title="$titre $gov_courrant" \
--text="$texte" \
--column="$colonne" $gov \
--timeout="$delai" \
--width="$largeur" \
--height="$hauteur")
test -z "$mode" || pkexec cpupower frequency-set -g "$mode"
Si Watael passe par ici, il trouvera probablement quelque chose à redire.
Dernière modification par nany (Le 18/05/2024, à 13:09)
En ligne
#3 Le 18/05/2024, à 17:51
- Watael
Re : Petit script pour gérer le CPU sous Xubuntu
#!/bin/bash
delai=10
largeur=300
hauteur=275
titre='Mode CPU(s) actuel(s) :'
texte='Veuillez indiquer le nouveau mode.'
colonne='Mode'
gov_courant=$(LC_ALL=C cpupower frequency-info -p | grep -oP 'The governor "\K[^"]+')
readarray -d '' -t gov < <(LC_ALL=C cpupower frequency-info -g | sed -zn 's/.*: \|'"$gov_courant"'//g; s/ \|\n/\o0/gp' | sort -z)
mode=$(zenity --list \
--title="$titre $gov_courrant" \
--text="$texte" \
--column="$colonne" ${gov[@]} \
--timeout="$delai" \
--width="$largeur" \
--height="$hauteur")
test -z "$mode" || pkexec cpupower frequency-set -g "$mode"
?
LC_ALL=C c'est parce que j'ai cpupower en français.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#4 Le 18/05/2024, à 18:13
- nany
Re : Petit script pour gérer le CPU sous Xubuntu
readarray -d '' -t gov < <(LC_ALL=C cpupower frequency-info -g | sed -zn 's/.*: \|'"$gov_courant"'//g; s/ \|\n/\o0/gp' | sort -z)
GG!
J’avais bien essayé sort -z mais n’ai pas pensé à consulter le manuel de sed pour voir qu’il a aussi une option -z.
Je pars de ce pas copier cent fois : « Je dois consulter les manuels lorsque je coince sur un problème. »
En ligne
#5 Le 19/05/2024, à 17:49
- omorin
Re : Petit script pour gérer le CPU sous Xubuntu
Ou alors...
#!/bin/bash
declare -r delai="10" largeur="300" hauteur="275"
declare -r titre="Mode CPU(s) actuel(s) :"
declare -r texte="Veuillez indiquer le nouveau mode." colonne="Mode"
gov_courrant=$(cpupower frequency-info -p | grep -oP 'The governor "\K[^"]+')
gov=$(cpupower frequency-info -g | grep -oP ':\K.*' | tr ' ' '\n' | sort | tr '\n' ' ')
gov=${gov//"$gov_courrant"}
mode=$(zenity --list \
--title="$titre $gov_courrant" \
--text="$texte" \
--column="$colonne" $gov \
--timeout="$delai" \
--width="$largeur" \
--height="$hauteur")
test -z "$mode" || sudo cpupower frequency-set -g "$mode"
Dernière modification par omorin (Le 19/05/2024, à 18:11)
Hors ligne
#6 Le 19/05/2024, à 20:41
- Watael
Re : Petit script pour gérer le CPU sous Xubuntu
il y a trop de commandes pour moi.
mais, oui, le Remplacement de paramètres est une bonne idée.
pourquoi crois-tu que déclarer tes variables en readonly est pertinent ?
il n'y a rien dans le script qui pourrait les modifier.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#7 Le 20/05/2024, à 15:57
- omorin
Re : Petit script pour gérer le CPU sous Xubuntu
Bonjour,
Je suis habitué aux langages plus typés que Bash ou une constante n'est pas une variable.
J'ai donc pris l'abitude de déclarer mes constantes en Read Only.
De même je ne quote les variables que si cela me semble utile.
Voici ma dermière version, améliorée par vos remarques.
#!/bin/bash
#
# Vesion du 20 mai 2024 par olivier MORIN
#
# Constantes pour l'interface
declare -r delai="10" largeur="300" hauteur="275"
declare -r titre="Mode CPU(s) actuel(s) :"
declare -r texte="Veuillez indiquer le nouveau mode." colonne="Mode"
# Recherche du mode CPU en cours
mode_courrant=$(cpupower frequency-info -p | \
grep -oP 'The governor "\K[^"]+')
# Recherche des modes CPU possibles et tri alphabétique
mode_possibles=$(cpupower frequency-info -g | \
grep -oP 'governors:\K.*' | \
tr ' ' '\n' | sort | tr '\n' ' ')
# On supprime le mode en cours de la liste
mode_possibles=${mode_possibles/$mode_courrant}
# On affiche la fenêtre de dialogue pour le choix
mode_choisi=$(zenity --list \
--title="$titre $mode_courrant" \
--text="$texte" \
--column=$colonne $mode_possibles \
--timeout=$delai \
--width=$largeur \
--height=$hauteur)
# On applique le mode choisi si il y a eu une réponse
test -z $mode_choisi || sudo cpupower frequency-set -g $mode_choisi
Hors ligne
#8 Le 30/09/2024, à 15:45
- BrunoL
Re : Petit script pour gérer le CPU sous Xubuntu
La fonctionnalité est bien rendue mais j'obtiens toujours une volée de warning :
(zenity:74484): Gtk-WARNING **: 16:21:39.574: Theme parser error: gtk.css:173:702-728: Expected a valid color.
(zenity:74484): Gtk-WARNING **: 16:21:39.574: Theme parser error: gtk.css:175:750-776: Expected a valid color.
(zenity:74484): Gtk-WARNING **: 16:21:39.574: Theme parser error: gtk.css:189:55-69: Not a valid image
(zenity:74484): Gtk-WARNING **: 16:21:39.574: Theme parser error: gtk.css:190:26-40: Not a valid image
(zenity:74484): Gtk-WARNING **: 16:21:39.574: Theme parser error: gtk.css:200:357-373: No property named "-gtk-icon-effect"
(zenity:74484): Gtk-WARNING **: 16:21:39.574: Theme parser error: gtk.css:204:589-605: No property named "-gtk-icon-effect"
(zenity:74484): Gtk-WARNING **: 16:21:39.577: Theme parser error: gtk.css:390:42-61: No property named "-gtk-outline-radius"
(zenity:74484): Gtk-WARNING **: 16:21:39.577: Theme parser error: gtk.css:430:814-833: No property named "-gtk-outline-radius"
(zenity:74484): Gtk-WARNING **: 16:21:39.577: Theme parser error: gtk.css:432:1242-1270: No property named "-gtk-outline-top-left-radius"
.../...
Est-ce parce que je n'utilise pas la bonne version de Gtk ou de zenity ?
Je n'ai rien trouvé sur ce sujet dans : https://sourceforge.net/projects/cpu-mode/
Y-a-t'il moyen de faire disparaitre ces warning ? Merci.
Hors ligne
#9 Le 01/10/2024, à 13:40
- omorin
Re : Petit script pour gérer le CPU sous Xubuntu
Bonjour,
C'est l'expression de l'hyper sensibilité de GTK.
On peut limiter les warning ainsi :
zenity --info 2> >(grep -v 'Gtk-WARNING')
Ce sujet a déjà été évoqué ici : https://forum.ubuntu-fr.org/viewtopic.php?id=1996551
Théoriquement, les messages ne sont pas affichés car dans une boite "terminal" cachée.
Sur quelle version de linux es-tu ?
Dernière modification par omorin (Le 01/10/2024, à 13:43)
Hors ligne
#10 Le 01/10/2024, à 16:30
- Watael
Re : Petit script pour gérer le CPU sous Xubuntu
#!/bin/bash
declare -r delai=10 \
largeur=300 \
hauteur=275 \
titre='.....' \
texte='......' \
colonne='Mode' # comme ça, ça me semble bien rangé, et plus lisible:)
mode_courant=$(LC_ALL=C cpupower ...) # LC_ALL=C pour être sûr que la langue utilisée sera l'anglais.
modes_possibles=( $(LC_ALL=C cpupower frequency-info -g | sed -n '/governors:/{s/.*governors:\s\+//; s/'"$mode_courant"'//; s/^ *//;s/ *$//p}') )
modes_possibles=$( IFS=$'\n'; sort <<<"${modes_possibles[*]}")
mode_choisi=$(zenity --list --columns Mode ${modes_possibles[@]} ... )
couRant : un seul r
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne