ACPI 关闭并锁定用户会话

ACPI 关闭并锁定用户会话

我尝试备份 Ubuntu VirtualBox 客户机。VirtualBoxsave state不是一个解决方案,因为它依赖于 VirtualBox 版本。所以我需要执行 ACPI 关闭(使用 VirtualBox acpipowerbutton)。问题是,如果不存在用户会话或用户会话未被锁定,Ubuntu 的 ACPI 关闭似乎可以工作

到目前为止,我所做的就是编写一个 (Windows cmd) 脚本来关闭acpipowerbuttonVirtualBox Linux 客户机 (Ubuntu 和 MINT)。运行完美,但不适用于锁定的客户机系统用户会话。

再次:ACPI 已可用于解锁会话。但对于锁定会话则不行。systemctl status acpid.service告诉我“活动(正在运行)”。所以我认为 ACPI 服务本身存在且正在运行,但需要配置?

有没有办法更改设置在 Ubuntu 中允许锁定会话的 ACPI 关闭?

或者 VirtualBox 中是否有任何“强制”选项来对锁定的 Ubuntu 客户机执行 ACPI 关闭?

答案1

您可能需要安装该acpid服务才能实现此目标。以下是完整的步骤:

  1. 打开终端(如果尚未打开)

  2. 安装acpid服务:

    $ sudo apt install acpid
    
  3. 配置acpid运行在事件上调用的脚本doevents.sh

    $ sudo echo -e 'event=.*\naction=/etc/acpi/doevents.sh %e' > /etc/acpi/events/anything
    

    笔记:文件名可以是任意的。如果您希望使用除 doevents.sh请随意替换。

  4. 创建doevents.sh文件:

    $ sudo echo -e '#!/bin/bash\n\ncase "$1" in\nbutton/power)\ncase "$2" in\nPBTN) shutdown -h now ;;\nesac\nesac\n' > /etc/acpi/doevents.sh
    $ sudo chmod +x /etc/acpi/doevents.sh
    
  5. 重启acpid服务:

    sudo systemctl restart acpid.service 
    
  6. 模拟按下虚拟机上的电源按钮。它应该可以正常关闭。

希望这能解决你的问题

相关内容