为什么我的某些 powertop 命令不起作用

为什么我的某些 powertop 命令不起作用

我正在尝试使我的 powertop 调整永久生效。我运行了 sudo powertop --html,然后我得到了需要添加到 /etc/rc.local 的命令列表。我将它们添加到 /etc/rc.local,其中大多数都有效,但有些无效。例如,将 VM 写回超时从坏设置为好的命令是...

echo '1500' > '/proc/sys/vm/dirty_writeback_centisecs';

尽管我已将此命令添加到 /etc/rc.local 文件中,但它仍不起作用。其他一些与启用 SATA 链路电源管理相关的命令也不起作用,例如...

echo 'min_power' > '/sys/class/scsi_host/host0/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_host/host1/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_host/host2/link_power_management_policy';

这些也在 /etc/rc.local 文件中。这是我的 rc.local 文件的副本

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# these commands work
echo '0' > '/proc/sys/kernel/nmi_watchdog';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1a.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:01.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1d.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.2/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:16.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:14.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.3/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:01:00.0/power/control';

# these commands don't work
echo '1500' > '/proc/sys/vm/dirty_writeback_centisecs';
echo 'min_power' > '/sys/class/scsi_host/host0/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_host/host1/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_host/host2/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_host/host3/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_host/host4/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_host/host5/link_power_management_policy';
echo '1' > '/sys/module/snd_hda_intel/parameters/power_save';
echo 'auto' > '/sys/bus/pci/devices/0000:00:00.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:01:00.1/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1b.0/power/control';

exit 0

为什么这些命令不起作用?

更新:

当我通过命令提示符运行此脚本时,命令可以正常工作。因此,如果我启动系统、登录并打开命令提示符并输入...

sudo /etc/rc.local

脚本运行良好,powertop 中的所有设置均正确设置。因此,这意味着脚本可执行,命令语法正确。

我敢打赌,rc.local 脚本在启动期间正确执行,但此后其他东西正在重置不起作用的 powertop 设置。有什么想法为什么会发生这种情况以及如何修复它?

答案1

检查这个问题https://unix.stackexchange.com/questions/167820/startup-commands-in-etc-rc-local-wont-work

第一条评论建议“在 /etc/rc.local 的顶部,#!/bin/sh 下方添加 set -x; exec >/var/log/rc.local.log 2>&1”。

这帮助我找到了我尝试运行的程序的问题。

相关内容