我的戴尔笔记本电脑在内核 3.14上存在此错误。作为一种解决方法,我写了一个简单的脚本
/usr/bin/brightness-fix:
#!/bin/bash
echo 0 > /sys/class/backlight/intel_backlight/brightnes
Run Code Online (Sandbox Code Playgroud)
(和由可执行:chmod +x /usr/bin/brightness-fix)
以及在启动时执行的调用它的 systemd 服务:
/etc/systemd/system/brightness-fix.service
[Unit]
Description=Fixes intel backlight control with Kernel 3.14
[Service]
Type=forking
ExecStart=/usr/bin/brightness-fix
TimeoutSec=0
StandardOutput=syslog
#RemainAfterExit=yes
#SysVStartPriority=99
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
并启用: systemctl enable /etc/systemd/system/brightness-fix.service
这就像一个魅力,我可以根据需要控制我的显示亮度。当笔记本电脑在进入睡眠模式后恢复时出现问题(例如,当关闭笔记本电脑唇时):除非我手动执行上面的第一个脚本,否则亮度控制不再起作用:/usr/bin/brightness-fix
我如何创建另一个像上面一样的 systemd 服务以在恢复时执行?
编辑:
根据下面的评论,我修改了我的brightness-fix.service如下:
[Unit]
Description=Fixes intel backlight control with Kernel 3.14
[Service]
Type=oneshot
ExecStart=/usr/local/bin/brightness-fix
TimeoutSec=0
StandardOutput=syslog
[Install]
WantedBy=multi-user.target sleep.target
Run Code Online (Sandbox Code Playgroud)
我还添加echo "$1 $2" > /home/luca/br.log到我的脚本中以检查它是否实际执行。该脚本实际上也在恢复 ( post suspend) 时执行,但没有任何效果(背光为 100% 且无法更改)。我也尝试过日志记录$DISPLAY,$USER并且在恢复时,它们是空的。所以我的猜测是脚本在从睡眠中醒来时执行得太早了。任何提示?
jat*_*255 26
我知道这是一个老问题,但以下单元文件对我有用,可以在从睡眠恢复时运行脚本:
[Unit]
Description=<your description>
After=suspend.target
[Service]
User=root
Type=oneshot
ExecStart=<your script here>
TimeoutSec=0
StandardOutput=syslog
[Install]
WantedBy=suspend.target
Run Code Online (Sandbox Code Playgroud)
我相信是After=suspend.target让它在恢复时运行,而不是在计算机进入睡眠状态时运行。
miv*_*ivk 10
作为编写和启用单元文件的替代方法,您还可以将 shell 脚本(或脚本的符号链接)放入/lib/systemd/system-sleep/.
它将在睡眠/休眠之前和恢复时间调用。
来自man systemd-suspend.service:
在进入系统挂起和/或休眠之前 systemd-suspend.service(分别和其他提到的单元)将运行 /usr/lib/systemd/system-sleep/ 中的所有可执行文件,并向它们传递两个参数。第一个参数将是“pre”,第二个参数是“暂停”、“休眠”或“混合睡眠”,具体取决于所选操作。在离开系统挂起和/或休眠后立即运行相同的可执行文件,但第一个参数现在是“post”。此目录中的所有可执行文件都是并行执行的,并且直到所有可执行文件都完成后才会继续执行操作。
用这个测试它:
#!/bin/sh
## This file (or a link to it) must be in /lib/systemd/system-sleep/
logger -t "test" "\$0=$0, \$1=$1, \$2=$2"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19684 次 |
| 最近记录: |