Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/05/2024, à 15: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, à 15:43)

Hors ligne

#2 Le 18/05/2024, à 12: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, à 14:09)

Hors ligne

#3 Le 18/05/2024, à 18: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, à 19:13

nany

Re : Petit script pour gérer le CPU sous Xubuntu

Watael a écrit :
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. »

Hors ligne

#5 Le 19/05/2024, à 18: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, à 19:11)

Hors ligne

#6 Le 19/05/2024, à 21:41

Watael

Re : Petit script pour gérer le CPU sous Xubuntu

il y a trop de commandes pour moi. big_smile

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, à 16: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, à 16: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, à 14: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, à 14:43)

Hors ligne

#10 Le 01/10/2024, à 17: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 wink


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne