首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在acpid事件上运行脚本

在acpid事件上运行脚本
EN

Ask Ubuntu用户
提问于 2020-04-29 19:01:12
回答 1查看 1.2K关注 0票数 0

在更新到20.04之后,我发现耳机插孔不能正常工作。因此,作为解决办法,我想在acpi事件上运行一个脚本。例如,当耳机插孔被插入,以重新加载声音模块。这是一个脚本:

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

#if [ -z "$1" ]; then
#  echo "Pulseaudio has these cards:"
#  pacmd list-cards | grep 'name: '
#fi

MODULE_INDEX=`pacmd list-modules | tac | grep -A 10 -e "argument: .*$1" | grep 'index:' | head -n 1 | cut -d ':' -f 2 | tr -d ' '`
MODULE_NAME=`pacmd list-modules | tac | grep -A 10 -e "argument: .*$1" | grep 'name:' | head -n 1 | cut -d ':' -f 2 | tr -d '<>'`
MODULE_ARGUMENTS=`pacmd list-modules | tac | grep -e "argument: .*$1" | head -n 1 | cut -d ':' -f 2 | tr -d '<>'`
#echo "Module index is $MODULE_INDEX"
#echo "Module name: $MODULE_NAME"
#echo "Module args: $MODULE_ARGUMENTS"

if [ -z "$MODULE_INDEX" ]; then echo "Could not find module index"; exit 0; fi
if [ -z "$MODULE_NAME" ]; then echo "Could not find module name"; exit 0; fi
if [ -z "$MODULE_ARGUMENTS" ]; then echo "Could not find module arguments"; exit 0; fi

#echo "Unloading module"
pacmd unload-module $MODULE_INDEX
#echo ""
#echo "Reloading module"
pacmd load-module $MODULE_NAME $MODULE_ARGUMENTS
#echo ""

如果我手动运行它,这很好。

接下来,我想在acpi事件上运行它。当我插入插孔时使用acpi_listen

代码语言:javascript
复制
jack/headphone HEADPHONE plug

接下来,在/etc/acpi/events中,我创建了包含

代码语言:javascript
复制
event=jack/headphone HEADPHONE plug
action=/etc/acpi/soundcard2.sh

我重新启动了

代码语言:javascript
复制
sudo service acpid restart

(我甚至重新启动了系统),但当我插入耳机插孔时,什么都没有发生。我做错什么了吗?

提前感谢

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2020-04-30 13:57:46

我只有Ubuntu18.04,所以也许systemd已经在20.04接管了更多的acpi事件的控制,您需要了解如何禁用它(例如在/etc/systemd/logind.conf中)。为了获得日志记录,我在/etc/default/acpid中添加了一行

代码语言:javascript
复制
OPTIONS=--logevents

sudo systemctl restart acpid之后,当我插入耳机时,我在systemd日志中看到了一些事件,它运行我的脚本ok:

代码语言:javascript
复制
$ sudo journalctl -u acpid -f
... acpid[2554]: 9 rules loaded
... acpid[2554]: waiting for events: event logging is on
... acpid[2554]: received input layer event "jack/headphone HEADPHONE plug"
... acpid[2554]: rule from /etc/acpi/events/meuh matched
... acpid[2558]: executing action "/home/meuh/bin/myscript"
... acpid[2554]: action exited with status 0
... acpid[2554]: 1 total rule matched
... acpid[2554]: completed input layer event "jack/headphone HEADPHONE plug"
票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1233078

复制
相关文章

相似问题

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