2014-12-23 68 views
8

的電源狀態在Windows(R)機器下面的函數可用於查詢機器的系統電源狀態:查詢的Linux計算機編程

BOOL WINAPI GetSystemPowerStatus(LPSYSTEM_POWER_STATUS lpSystemPowerStatus); 

是否有一臺Linux機器類似的東西?

+0

通過電源狀態你的意思是像電池信息的東西?像充電一樣,電源線是否插好等等? – ace

+0

@ace是的。我的理解是,Linux,Ubuntu是特定的,並帶有'upower'實用程序 – JCM

+4

如果您的程序正在運行,則計算機的電源狀態爲「開啓」。 :-) –

回答

2

在大多數Linux系統上,一個名爲acpid的守護程序會一直監視ACPI事件,並且通常會將信息記錄到/ var/log/acpid或/ var/log/messages。在http://linux.die.net/man/8/acpid有一個手冊頁。 acpid將當前的ACPI信息存儲在/ proc/acpi中,儘管它正在重新定位到/ sys某處,並且/ sys/power/state通過捕獲當前的電源狀態(cat/sys/power/state)。有關ACPI的更多信息,請致電http://acpi.sourceforge.net/documentation/sleep.html。 JCM提到了一個名爲AcpiTool的ACPI狀態監控命令行工具,可在http://sourceforge.net/projects/acpitool/找到。我在CentOS上構建了它,它工作正常。只需按照INSTALL文件中的說明進行安裝即可 - 它需要一個C++編譯器,它通常在Linux上,或者如果不使用yum或apt安裝。

的dmidecode可以做多種低層次的問題,包括系統電源和控制查詢,看http://linux.die.net/man/8/dmidecode

協同freedesktop.org RedHat的開發,並提供DeviceKit功率預RH7被稱爲微功耗開始RH7 。它由一個守護進程和命令行工具組成。其手冊頁在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廠商如戴爾和惠普提供的電源管理和監控他們自己的應用程序和我發現最好是使用它們,因爲他們知道如何查詢針對硬件設計的自定義探針併爲其支持團隊打印完整的診斷信息。

+0

Thx。 ACPI客戶端可以在找到 – JCM