Я написал сценарий для запуска, когда мой компьютер запускается, и он должен перезаписывать "energy_performance_preference" и "scaling_governor" на те, которые имеют разные значения.

То, что происходит, - это только первая команда по какой-то причине. У меня есть аналогичный скрипт для чего-то другого, который использует тот же процесс открытия консоли и запуска нескольких команд подряд от имени пользователя root.

Вот мой скрипт пока CPU_Boost.

См. Масштабирование частоты процессора для получения дополнительной информации.

1 ответ1

0

по какой-то причине выполняется только первая команда

Это потому, что у вас есть следующее:

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 будет разделять команды точкой с запятой (не символом новой строки), поэтому то, что выполняется, больше похоже на приведенное ниже (показано с одной командой на строку):

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

Вам также повезло, что konsole " перехватит все последующие аргументы, переданные Konsole " [ ref ] - большинство команд этого не сделают, вместо этого они принимают sudo в качестве параметра -e и пытаются обработать cp , -f , /home/austin/... качестве других аргументов командной строки.


cp не совсем подходит для использования с записью в sysfs ... даже если это работает. У вас будет больше шансов на успех с перенаправлением или tee .

Например, если ваш файл scaling_governor содержит performance текста, то вы можете сделать следующее:

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

Тогда не будет необходимости в последующем chown или chmod . Это три команды до одной.


Вы делаете , что когда - то для каждого из policy0 policy1 policy2 и policy3 Как насчет следующего:

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

Это четыре повторения вплоть до одного обращения к tee - и оно даже автоматически адаптируется для разных систем (моя система имеет 8 политик, а не 4).

Повторите это снова для energy_performance_preference и значения, которое вы хотите использовать.


Что касается того, чтобы он появился в konsole ... вам это нужно? Разве вы не можете просто запустить его как скрипт bash?

Возможно, если вы действительно хотите, вы можете использовать следующую команду в качестве команды / ярлыка для запуска скрипта:

konsole -e "${PATH_TO_SCRIPT}"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .