我想在耳机断开连接时执行一个脚本,但我讨厌这个想法持续轮询当状态发生改变时,已经执行了一些代码。
答案1
在大多数(如果不是全部)系统中,ACPI 可以处理此事件。要测试:
- 跑步
acpi_listen
拔下并重新插入耳机,示例输出:(麦克风/耳朵在我的笔记本电脑上共用同一个插孔)
jack/headphone HEADPHONE unplug jack/microphone MICROPHONE unplug jack/headphone HEADPHONE plug jack/microphone MICROPHONE plug
普京
your-script.sh
/etc/acpi/
为您的脚本添加事件触发器文件
/etc/acpi/events/
event=jack/headphone HEADPHONE unplug action=/etc/acpi/your-script.sh
检查那里的其他文件以供学习。
您可能需要重新启动
acpid
服务才能重新加载已更改的规则/etc/acpi/events/
sudo service acpid restart
参考: man acpid
答案2
脚本的当前版本现在包含一个sleep 0.25
命令。
sleep
基于计时器,因此不使用任何睡觉时处理周期……
它确实使用了极少量的 CPU 来设置计时器,但是sleep 1
(睡眠 1 秒)、sleep 60
(睡眠 1 分钟)和sleep 86400
(睡眠 1 天)都使用相同数量的 CPU 周期。
使用 ACPI然而完美的解决方案,因为 ACPI 是事件驱动的,而不是轮询驱动的。