Script BASH de escalado de frecuencia de CPU

Script BASH de escalado de frecuencia de CPU

Escribí un script para ejecutar cuando mi PC se inicia y se supone que debe sobrescribir "energy_performance_preference" y "scaling_governor" con otros que tienen valores diferentes.

Lo que sucede es que, por algún motivo, solo se ejecuta el primer comando. Tengo un script similar para otra cosa que usa el mismo proceso de abrir konsole y ejecutar múltiples comandos sucesivamente como root.

Aquí está mi guión hasta ahora.CPU_Boost.

VerEscalado de frecuencia de la CPUpara más información.

Respuesta1

solo se está ejecutando el primer comando por algún motivo

Esto se debe a que tienes lo siguiente:

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 dividirá los comandos mediante punto y coma (no una nueva línea), por lo que lo que se ejecuta es más parecido a lo siguiente (se muestra con un comando por línea):

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
[...]

También tienes suerte de que konsole"capturará todos los siguientes argumentos pasados ​​a Konsole" [árbitro] - la mayoría de los comandos no harán esto, sino que tomarán sudocomo parámetro -ee intentarán manejar cp, -f, /home/austin/...como otros argumentos de la línea de comando.


cpno es realmente apropiado para escribir en sysfs... incluso si funciona. Sería más probable que tuviera éxito con la redirección o tee.

Por ejemplo, si su scaling_governorarchivo contiene el texto performance, puede hacer lo siguiente:

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

Entonces no habría necesidad del siguiente chowno chmod. Son tres comandos reducidos a uno.


Lo harás una vez para cada uno de policy0, y . ¿Qué tal lo siguiente?policy1policy2policy3

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

Son cuatro repeticiones por cada llamada tee, e incluso se ajustará automáticamente para diferentes sistemas (mi sistema tiene 8 políticas, no 4).

Repita eso nuevamente para energy_performance_preferenceel valor que le gustaría usar.


En cuanto a hacer que aparezca en konsole... ¿lo necesitas? ¿No puedes simplemente ejecutarlo como un script bash?

Quizás, si realmente lo desea, podría utilizar lo siguiente como comando/atajo para iniciar el script:

konsole -e "${PATH_TO_SCRIPT}"

información relacionada