
PC の起動時に実行するスクリプトを作成しましたが、このスクリプトは「energy_performance_preference」と「scaling_governor」を異なる値で上書きすることになっています。
何らかの理由で、最初のコマンドだけが実行されるという状況が発生しています。私は、Konsole を開いて root として複数のコマンドを連続して実行するという同じプロセスを使用する、他の同様のスクリプトを持っています。
これまでの私のスクリプトはこちらCPUブースト。
見るCPU周波数スケーリング詳細については。
答え1
何らかの理由で最初のコマンドのみが実行されています
これは、次の理由によります。
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 はコマンドをセミコロン (改行ではない) で分割するため、実行される内容は以下のようになります (1 行に 1 つのコマンドで表示)。
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に渡される以下の引数をすべてキャッチします「[参照] - ほとんどのコマンドはこれを実行せず、代わり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
。これで、3 つのコマンドが 1 つに減りました。
policy0
これを、、policy1
およびpolicy2
のそれぞれに対して 1 回ずつ実行しますpolicy3
。次の例はどうでしょうか。
sudo tee /sys/devices/system/cpu/cpufreq/policy*/scaling_governor <<<"performance"
これにより、4 回の繰り返しが 1 回の呼び出しに減りtee
、異なるシステムに合わせて自動的に調整されます (私のシステムには 4 つではなく 8 つのポリシーがあります)。
energy_performance_preference
使用したい値について、これをもう一度繰り返します。
...に表示させるには、konsole
それが必要ですか? bash スクリプトとして実行するだけではだめですか?
本当に必要な場合は、スクリプトを起動するためのコマンド/ショートカットとして以下を使用できます。
konsole -e "${PATH_TO_SCRIPT}"