
Eu escrevi um script para ser executado quando meu PC for inicializado e ele deve substituir "energy_performance_preference" e "scaling_governor" por outros que tenham valores diferentes.
O que está acontecendo é que apenas o primeiro comando está sendo executado por algum motivo. Eu tenho um script semelhante para outra coisa que usa o mesmo processo de abertura do konsole e execução de vários comandos em sucessão como root.
Aqui está meu roteiro até agoraCPU_Boost.
VerEscala de frequência da CPUPara maiores informações.
Responder1
apenas o primeiro comando está sendo executado por algum motivo
Isso ocorre porque você tem o seguinte:
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; [...]
O Bash dividirá os comandos por ponto e vírgula (não por nova linha), então o que está sendo executado é mais parecido com o abaixo (mostrado com um comando por linha):
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
[...]
Você também tem sorte que konsole
"irá capturar todos os seguintes argumentos passados para o Konsole" [referência] - a maioria dos comandos não fará isso, em vez disso, tomará sudo
como parâmetro -e
e tentará manipular cp
, -f
, /home/austin/...
como outros argumentos de linha de comando.
cp
não é realmente apropriado para escrever em sysfs
... mesmo que funcione. Você teria mais chances de ter sucesso com o redirecionamento ou tee
.
Por exemplo, se o seu scaling_governor
arquivo contiver o texto performance
, você poderá fazer o seguinte:
echo "performance" | sudo tee /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
Então não haveria necessidade do chown
ou subsequente chmod
. São três comandos reduzidos a um.
Você está fazendo isso uma vez para cada um de policy0
, e . Que tal o seguinte:policy1
policy2
policy3
sudo tee /sys/devices/system/cpu/cpufreq/policy*/scaling_governor <<<"performance"
São quatro repetições em uma chamada tee
- e até se ajustam automaticamente a diferentes sistemas (meu sistema tem 8 políticas, não 4).
Repita isso novamente para energy_performance_preference
o valor que você gostaria de usar.
Quanto a fazer com que apareça em konsole
... você precisa disso? Você não pode simplesmente executá-lo como um script bash?
Talvez se você realmente quiser, você pode usar o seguinte como comando/atalho para iniciar o script:
konsole -e "${PATH_TO_SCRIPT}"