我是 Linux 编程新手(特别是 lubuntu),我正在开展一个项目,以让一台旧的、废弃的笔记本电脑启动并按照我想要的方式运行。我安装了 acpi 和 acpid,当我运行 acpi 命令时,我会得知我的笔记本电脑是否已插入(充电)或拔出(放电)。
我现在想让笔记本电脑在放电时自动休眠。我的第一个想法是编写一个脚本,每隔 30 秒左右轮询一次 acpi,然后每当它响应“正在放电”一词时运行一个休眠命令。不过,我知道 acpid 是更好用的工具,因为它更受事件驱动。我似乎找不到任何有关使笔记本电脑在拔掉插头后休眠的材料 - 有什么建议吗?
答案1
守护acpid
进程应通过 ACPI 子系统接收电池事件。当您拔出/插入笔记本电脑时,应该会出现相关的电池事件。这些事件可以与关闭/挂起/休眠系统等操作相关联。
/var/log/messages
首先,尝试通过拔下笔记本电脑时观察或相关日志文件来验证。应该有类似的东西
... ACPI action undefined: ...
如果没有任何内容,您可以尝试acpi_listen
连接到 acpid 并侦听事件的命令。
/etc/acpi/events
然后,您可以在电池事件目录下配置通用事件处理程序。在那里创建一个文件,例如battery.conf
包含以下内容:
event=battery.*
action=/etc/acpi/actions/battery.sh
它表示任何电池事件都应该由脚本处理battery.sh
。在此脚本中,我将监视文件中可用的电池状态/proc/acpi/battery/*/state
。特别是检查线路“充电状态”应该改为“放电”当您拔掉笔记本电脑的插头或“正在充电/已充电”当你把它插回去时。
根据此信息,您可以从事件处理程序运行 hibernate 命令battery.sh
。此外,您还可以找到一些其他有用的示例,例如github。