自从从 14.10 升级到 15.04 后,我用来为笔记本电脑设置适当的热配置文件模式的自定义脚本就停止工作了,我认为这是因为 pm-utils 对 AC/BAT 切换没有响应。
现在,如果这是系统新的预期行为,那么我现在应该把脚本放在哪里来完成这项工作(即使在交流电下我的笔记本电脑也能正常运行)?
答案1
好的,在 Arch Wiki 中找到了答案。他们给出了下一个解决方案:
systemd 只做不到一件事(截至 systemd-204):根据系统是使用交流电还是电池供电来进行电源管理。为了填补这一空白,您可以创建一个 udev 规则,在交流适配器插入和拔出时运行脚本:
/etc/udev/rules.d/powersave.rules SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/path/to/your/script true" SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/path/to/your/script false"
对于我的 Sony Vaio,我的个人设置如下:
/etc/udev/rules.d/99-laptopac.rules
SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/usr/local/bin/sony-thermal.sh true"
SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/usr/local/bin/sony-thermal.sh false"
/usr/local/bin/sony-thermal.sh
/bin/sh #!/bin/sh 复制代码 帮助() { 猫 <<EOF $0:索尼笔记本电脑热配置文件管理 此脚本根据以下情况选择“性能”或“静音”模式: 笔记本电脑是否使用交流电还是电池供电。 末梢血 } 设置索尼热配置文件(){ [ !-d /sys/devices/platform/sony-laptop ] && 退出 $NA [ !-f /sys/devices/platform/sony-laptop/thermal_control ] && 退出 $NA 案例 $1 表现) printf "将 SONY 热控制设置为性能模式。" thermal_control=性能;; 沉默的) printf "将 SONY 热控制设置为静音模式。" 热控制=静音;; *) printf "将 SONY 热控制设置为平衡模式。" 热控制=平衡;; 埃萨克 echo "$thermal_control" > /sys/devices/platform/sony-laptop/thermal_control && echo 完成。|| \ 回显失败。 } 案例 $1 真)set_sony_thermal_profile静音;; false) set_sony_thermal_profile 性能;; 帮助) 帮助 ;; *)退出$NA;; 埃萨克 出口 0
这可以防止我的笔记本电脑的 CPU 即使在轻负载条件下也持续进入“节流”状态,从而导致性能和用户体验损失。
答案2
默认的 Ubuntu 电源脚本可以通过这种方式触发。
pm-utils
添加包含此内容的文件
SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/usr/sbin/pm-powersave true"
SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/usr/sbin pm-powersave false"
到/etc/udev/rules.d/
当您从电池切换到交流电并切换回时,将应用默认的 Ubuntu 省电功能。
存在启动时不触发的问题。要修复此问题,请添加
udevadm trigger -s power_supply
到/etc/rc.local
之前exit0
。
Ubuntu 16.04 的另一个问题是网络管理器默认关闭电源管理。当接口启动时,它会覆盖该pm-utils
设置。
也可以通过添加文件来解决这个问题02-powersave
#!/bin/sh
[ "$1" = "wlan0" ] && [ "$2" = "up" ] && udevadm trigger -s power_supply
到/etc/NetworkManager/dispatcher.d
。
笔记:您需要用wlan0
可以在中找到的无线接口进行替换ifconfig
。