以编程方式查询Linux机器的电源状态

在Windows(R)机器上,以下function可用于查询机器的系统电源状态:

BOOL WINAPI GetSystemPowerStatus(LPSYSTEM_POWER_STATUS lpSystemPowerStatus); 

有没有类似的Linux机器?

在大多数Linux系统上,一个名为acpid的守护进程会一直监视ACPI事件,通常会将信息记录到/ var / log / acpid或/ var / log / messages。 在http://linux.die.net/man/8/acpid上有一个manpage。 acpid将当前的ACPI信息存储在/ proc / acpi中,虽然它正在被重新定位到/ sys的某个地方,而/ sys / power / state通过捕获当前的电源状态(cat / sys / power / state)。 有关ACPI的更多信息,请访问http://acpi.sourceforge.net/documentation/sleep.html 。 JCM提到了一个用于ACPI状态监视的命令行工具,命名为AcpiTool,位于http://sourceforge.net/projects/acpitool/ 。 我在CentOS上建立了它,它工作正常。 只需按照INSTALL文件中的说明进行安装 – 它需要一个C ++编译器,通常在Linux上,或者如果不使用yum或apt安装。

dmidecode可以做很多种查询,包括系统电源和控制等低层次的问题,参见http://linux.die.net/man/8/dmidecode

与freedesktop.org合作RedHat开发并提供RH7以前的RH7版本的DeviceKit-power。 它由一个守护进程和命令行工具组成。 它的联机手册在http://www.pkill.info/linux/man/1-upower/ 。 命令行工具的–dump选项提供了一些有用的信息,但很少更新。 也许重新启动守护进程会导致更新。 以下是CentOS 6主机的输出示例:

 ca:17: devkit-power --dump Device: /org/freedesktop/DeviceKit/Power/devices/line_power_ACAD native-path: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00/power_supply/ACAD power supply: yes updated: Tue Dec 23 20:28:27 2014 (866 seconds ago) has history: no has statistics: no line-power online: yes Daemon: daemon-version: 014 can-suspend: no can-hibernate yes on-battery: no on-low-battery: no lid-is-closed: no lid-is-present: no 

戴尔和惠普等大多数主要的PC供应商都提供了自己的电源管理和监控应用程序,我发现最好使用它们,因为他们知道如何查询设计到硬件中的定制探针,并为其支持团队打印完整的诊断信息。