BASH-Skript zur Skalierung der CPU-Frequenz

BASH-Skript zur Skalierung der CPU-Frequenz

Ich habe ein Skript geschrieben, das beim Hochfahren meines PCs ausgeführt wird und die Werte „energy_performance_preference“ und „scaling_governor“ durch Werte mit anderen Werten überschreiben soll.

Aus irgendeinem Grund wird nur der erste Befehl ausgeführt. Ich habe ein ähnliches Skript für etwas anderes, das denselben Vorgang verwendet, bei dem die Konsole geöffnet und mehrere Befehle nacheinander als Root ausgeführt werden.

Hier ist mein bisheriges SkriptCPU_Boost.

SehenCPU-Frequenzskalierungfür mehr Informationen.

Antwort1

Aus irgendeinem Grund wird nur der erste Befehl ausgeführt

Dies liegt daran, dass Sie Folgendes haben:

konsole -e sudo cp -f /home/austin/CPU_Boost/energy_performance_preference /sys/devices/system/cpu/cpufreq/policy0/; cp -f /home/austin/CPU_Boost/scaling_governor /sys/devices/system/cpu/cpufreq/policy0/; chown root:root /sys/devices/system/cpu/cpufreq/policy0/energy_performance_preference; chmod 444 /sys/devices/system/cpu/cpufreq/policy0/energy_performance_preference; [...]

Bash trennt Befehle durch ein Semikolon (nicht durch eine neue Zeile), sodass die ausgeführte Aktion eher wie folgt aussieht (angezeigt mit einem Befehl pro Zeile):

konsole -e sudo cp -f /home/austin/CPU_Boost/energy_performance_preference /sys/devices/system/cpu/cpufreq/policy0/
cp -f /home/austin/CPU_Boost/scaling_governor /sys/devices/system/cpu/cpufreq/policy0/
chown root:root /sys/devices/system/cpu/cpufreq/policy0/energy_performance_preference
chmod 444 /sys/devices/system/cpu/cpufreq/policy0/energy_performance_preference
[...]

Sie haben auch Glück, dass konsole"fängt alle an Konsole übergebenen Argumente ab" [Referenz] – die meisten Befehle tun dies nicht, sondern verwenden sudoals Parameter , , -eund versuchen cp, -f, /home/austin/...wie andere Befehlszeilenargumente zu verarbeiten.


cpist nicht wirklich für das Schreiben an ... geeignet sysfs, auch wenn es funktioniert. Mit einer Umleitung oder hätten Sie wahrscheinlich mehr Erfolg tee.

scaling_governorWenn Ihre Datei beispielsweise den Text enthält performance, können Sie Folgendes tun:

echo "performance" | sudo tee /sys/devices/system/cpu/cpufreq/policy0/scaling_governor

Dann wäre das nachfolgende „ chownoder“ nicht mehr nötig chmod. Damit sind aus drei Befehlen nur noch einer.


Sie tun dies einmal für policy0, policy1, policy2und policy3. Wie wäre es mit Folgendem:

sudo tee /sys/devices/system/cpu/cpufreq/policy*/scaling_governor <<<"performance"

Das bedeutet, dass aus vier Wiederholungen nur noch ein Anruf erfolgt tee– und die Anpassung erfolgt sogar automatisch an unterschiedliche Systeme (mein System hat 8 Richtlinien, nicht 4).

Wiederholen Sie dies für energy_performance_preferenceund den Wert, den Sie verwenden möchten.


Und wie sieht es mit der Anzeige aus konsole? Ist das nötig? Kannst du es nicht einfach als Bash-Skript ausführen?

Wenn Sie wirklich möchten, können Sie Folgendes als Befehl/Verknüpfung zum Starten des Skripts verwenden:

konsole -e "${PATH_TO_SCRIPT}"

verwandte Informationen