You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu Server 22.04 LTS笔记本服务器按键自动开关显示器的实现问题求助

Ubuntu Server 22.04 LTS笔记本服务器按键自动开关显示器的实现问题求助

嘿,我看了你的问题,发现几个可能导致脚本失效的点,咱们一步步来排查修复:

1. 脚本里的路径写错了

你脚本里写的是"\dev\input\event4",但Linux系统的路径分隔符是正斜杠/,反斜杠是Windows的写法,这个错误直接导致cat命令找不到设备文件,自然检测不到键盘输入。要改成正确的路径/dev/input/event4。

2. 管道子shell的逻辑有问题

你用管道把cat的输出传给子shell的写法,容易因为缓冲、权限上下文的问题导致read -n 1无法正确捕获输入。可以换一种更直接的监听方式,去掉多余的管道和子shell。

3. 权限冗余与上下文问题

脚本里频繁用sudo反而可能引发权限上下文的问题,比如系统服务运行时的权限和手动执行时不一样。你可以先给运行服务的用户添加到input用户组,这样就不需要每次都用sudo访问输入设备了:

sudo usermod -aG input $USER

如果服务是用root用户运行的,这一步可以跳过。

修改后的脚本示例

#!/bin/bash

while true; do
    # 关闭显示器
    vbetool dpms off

    # 监听键盘设备的输入
    while read -n 1 < /dev/input/event4; do
        # 检测到输入,立即唤醒显示器
        vbetool dpms on
        # 等待10秒无操作后,回到关闭状态
        sleep 10
        # 跳出内层循环,回到外层关闭显示器的逻辑
        break
    done
done

额外排查建议

如果修改后还是不行,可以做这几件事:

  • 用evtest /dev/input/event4再次确认设备是否正确,确保event4确实对应你的物理键盘;
  • 查看服务的日志(journalctl -u 你的服务名.service),看看有没有权限不足、设备找不到这类报错信息;
  • 确保vbetool在服务运行的环境中能正常调用,有时候系统服务的环境变量和用户登录后的环境不一样。

试试这些调整,应该能解决你的问题,如果还有其他细节可以补充哦!

备注:内容来源于stack exchange,提问作者Marco Brembati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 09:09:31