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)

En 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. »

En 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