
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 sudo
als Parameter , , -e
und versuchen cp
, -f
, /home/austin/...
wie andere Befehlszeilenargumente zu verarbeiten.
cp
ist 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_governor
Wenn 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 „ chown
oder“ nicht mehr nötig chmod
. Damit sind aus drei Befehlen nur noch einer.
Sie tun dies einmal für policy0
, policy1
, policy2
und 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_preference
und 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}"