首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Acpid无法执行脚本

Acpid无法执行脚本
EN

Ask Ubuntu用户
提问于 2021-07-04 18:16:53
回答 1查看 277关注 0票数 2

我有一台旧笔记本电脑,我安装了Ubuntu20.04LTS服务器版本(没有GUI,只有CLI)。它通过SSH管理,因此它的显示是不必要的。我想关闭显示器时,我关闭盖子,并再次打开,如果我打开它。

我已经成功地配置了acpid来管理显示。

/etc/acpi/events中,我创建了一个文件:

代码语言:javascript
复制
event=button/lid.*
action=/etc/acpi/lid.sh

剧本:

代码语言:javascript
复制
#!/bin/sh

grep -q closed /proc/acpi/button/lid/LID/state
if [ $? = 0 ]
then
    # close action
    setterm --blank force
else
    # open action
    setterm --blank poke
fi

如果我手动运行这个脚本,它就工作得很好,但是似乎acpi无法运行该脚本:

代码语言:javascript
复制
$ sudo journalctl -u acpid -f

...
Jul 04 20:03:01 server acpid[1179]: received input layer event "button/lid LID close"
Jul 04 20:03:01 server acpid[1179]: rule from /etc/acpi/events/lid matched
Jul 04 20:03:01 server acpid[1353]: executing action "/etc/acpi/lid.sh"
Jul 04 20:03:01 server acpid[1179]: action exited with status 1
Jul 04 20:03:01 server acpid[1179]: 1 total rule matched
Jul 04 20:03:01 server acpid[1179]: completed input layer event "button/lid LID close"
...

错误:状态1退出的操作(不是0)

如果我知道正确,退出代码1是一个权限问题(不允许操作)。我不知道为什么“不允许”,因为我不需要使用sudo来运行这个脚本。

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2021-07-06 21:35:55

所以我终于弄明白问题出在哪里了。

正如steeldriver所提到的,setterm需要在终端中运行(在笔记本电脑前),而在我的脚本中,它没有连接到真正的终端,setterm无法改变任何事情。

根据 post,我们需要将输出或输入重定向到/从控制台。

所以我修改了我的脚本:

代码语言:javascript
复制
#!/bin/sh

grep -q closed /proc/acpi/button/lid/LID/state
if [ $? = 0 ]
then
    # close action
    setterm -term linux --blank force 

我测试了这个脚本,它的工作就像一个魅力;)

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1349997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档