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
相关产品推荐
相关产品推荐

