我們可以輕鬆地通過圖形化介面檢視當前電量百分比、是否在充電以及當前電量還可以使用多長時間等電池狀態,但是卻無法檢視電池健康度等相關資訊。
在這篇文章就是為了解決這些問題。
在 Linux 上有很多這樣的實用工具,而且可以在命令列使用。
這篇文章今天就要探討這個主題,我會盡我所能的覆蓋儘可能多的資訊。
每月檢查一次你的電池健康度是一個很好的想法。它可以幫你檢查你當前遇到的問題是否與電池或者充電相關。
同時,我們也可以檢視電池模組名稱、電源、廠商以及電池規格等。
電源管理是在不使用時關閉電源或者切換系統的元件到低耗模式的一種功能。
upower
:是一個命令列工具,其提供了羅列系統中電源的介面。acpi
:顯示來自 /proc
或者 /sys
檔案系統中的一些資訊,例如電池狀態或者熱量資訊。batstat
:是一個為 Linux 列印電池狀態的命令列工具。tlp
:可以為你帶來更高階的電源管理,而無需修改任何設定。class file
:這個 sysfs 檔案系統是一個提供了核心資料結構介面的偽檔案系統。upower 是一個命令列工具,其提供了羅列系統中電源的介面。它在你的電腦上可以控制不同操作的延遲,這可以為你節省很大一部分電量。
只需要在 Linux 中執行以下命令獲取電池以及它所依賴的其他資訊。
$ upower -i /org/freedesktop/UPower/devices/battery_BAT0 native-path: BAT0 vendor: SMP model: L14M4P23 serial: 756 power supply: yes updated: Monday 03 December 2018 07:56:18 PM IST (95 seconds ago) has history: yes has statistics: yes battery present: yes rechargeable: yes state: discharging warning-level: none energy: 28.23 Wh energy-empty: 0 Wh energy-full: 52.26 Wh energy-full-design: 60 Wh energy-rate: 10.714 W voltage: 14.819 V time to empty: 2.6 hours percentage: 54% capacity: 87.1% technology: lithium-ion icon-name: 'battery-good-symbolic' History (charge): 1543847178 54.000 discharging History (rate): 1543847178 10.714 discharging
使用下面的格式檢查電池的特定資訊。
$ upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -i "state\|percentage\|time to empty" state: discharging time to empty: 2.1 hours percentage: 43%
這個類似於上面的那個,但是是在充電線纜的插入後執行,這也就是為什麼下面會顯示正在充電狀態的原因。
$ upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -i "state\|percentage\|time to empty" state: charging percentage: 41%
TLP 是一個自由開源的多功能的命令列工具,它可以優化筆電電池而無需修改任何設定。
TLP 可以為你的 Linux 帶來更高階的電源管理,而無需理解任何技術細節。TLP 預設附帶了一個已經為你的電池優化好的設定,所以你可以安裝好後就不再管它了。儘管 TLP 是一個可以根據你的需求高度可客製化的工具。
TLP 在絕大多數 Linux 發行版,例如 Arch、Debian、Fedora、Gentoo、openSUSE 等的官方庫中都可用。使用你的 Linux 發行版的包管理安裝 TLP 即可。
只需要在 Linux 中執行以下命令獲取電池以及其他所依賴的資訊。
$ sudo tlp-stat -b--- TLP 1.1 --------------------------------------------+++ Battery Status/sys/class/power_supply/BAT0/manufacturer = SMP/sys/class/power_supply/BAT0/model_name = L14M4P23/sys/class/power_supply/BAT0/cycle_count = (not supported)/sys/class/power_supply/BAT0/energy_full_design = 60000 [mWh]/sys/class/power_supply/BAT0/energy_full = 52260 [mWh]/sys/class/power_supply/BAT0/energy_now = 21950 [mWh]/sys/class/power_supply/BAT0/power_now = 10923 [mW]/sys/class/power_supply/BAT0/status = DischargingCharge = 42.0 [%]Capacity = 87.1 [%]
也可以檢視其他的資訊。
$ sudo tlp-stat -s--- TLP 1.1 --------------------------------------------+++ System InfoSystem = LENOVO Lenovo ideapad Y700-15ISK 80NVBIOS = CDCN35WWRelease = "Manjaro Linux"Kernel = 4.19.6-1-MANJARO #1 SMP PREEMPT Sat Dec 1 12:21:26 UTC 2018 x86_64/proc/cmdline = BOOT_IMAGE=/boot/vmlinuz-4.19-x86_64 root=UUID=69d9dd18-36be-4631-9ebb-78f05fe3217f rw quiet resume=UUID=a2092b92-af29-4760-8e68-7a201922573bInit system = systemd Boot mode = BIOS (CSM, Legacy)+++ TLP StatusState = enabledLast run = 07:16:12 IST, 4362 sec(s) agoMode = batteryPower source = battery```### 如何使用 ACPI 命令檢查電池狀態 ACPI 代表<ruby>高階設定和電源介面<rt>Advanced Configuration and Power Interface</rt></ruby>模組,它們是不同 ACPI 部件的核心模組。它們啟用特殊的 ACPI 函數向 `/proc` 或者 `/sys` 中新增資訊。這些資訊可以通過事件或者其他監控程式的 acpid 進行解析。
$ acpi Battery 0: Charging, 43%, 01:05:11 until charged “`
檢視電池容量。
$ acpi -iBattery 0: Charging, 43%, 01:05:07 until chargedBattery 0: design capacity 3817 mAh, last full capacity 3324 mAh = 87%
檢視更多有關電池及其相關的資訊。
$ acpi -VBattery 0: Charging, 43%, 01:05:07 until chargedBattery 0: design capacity 3815 mAh, last full capacity 3323 mAh = 87%Adapter 0: on-lineCooling 0: Processor 0 of 10Cooling 1: Processor 0 of 10Cooling 2: Processor 0 of 10Cooling 3: iwlwifi 0 of 19Cooling 4: Processor 0 of 10Cooling 5: iwlwifi no state information availableCooling 6: Processor 0 of 10Cooling 7: Processor 0 of 10Cooling 8: Processor 0 of 10Cooling 9: intel_powerclamp no state information availableCooling 10: x86_pkg_temp no state information availableCooling 11: Processor 0 of 10
batstat
是一個在 Linux 終端列印電池資訊的命令列工具。
Status: ChargingMax energy: 50.00 WhEnergy left: 24.50 WhPower Consumption: 26.40 WPercentage left: 49.00%Average power Consumption: 0.00 WTime elapsed: 0: 0:12 since 49.00%= Time ======== Percent ============================================ 0: 0: 0 49.00%
sysfs 檔案系統是一個提供了核心資料結構介面的偽檔案系統。sysfs 下的檔案提供有關裝置、核心模組、檔案系統和其他核心元件的資訊。
sysfs 檔案系統通常掛載在 /sys
。通常來說,它會被系統自動掛載,但是也可以使用例如 mount -t sysfs sysfs /sys
命令進行手動掛載。
在 sysfs 檔案系統中的很多檔案都是唯讀的,但也有一些是可寫的,允許更改核心變數。為了避免冗餘,符號連結被大量用於連線檔案系統數中的條目。
$ cat /sys/class/power_supply/BAT0/*051Normal0cat: /sys/class/power_supply/BAT0/device: Is a directory522600006000000026660000SMPL14M4P23cat: /sys/class/power_supply/BAT0/power: Is a directory276560001 756Chargingcat: /sys/class/power_supply/BAT0/subsystem: Is a directoryLi-ionBatteryPOWER_SUPPLY_NAME=BAT0POWER_SUPPLY_STATUS=ChargingPOWER_SUPPLY_PRESENT=1POWER_SUPPLY_TECHNOLOGY=Li-ionPOWER_SUPPLY_CYCLE_COUNT=0POWER_SUPPLY_VOLTAGE_MIN_DESIGN=14800000POWER_SUPPLY_VOLTAGE_NOW=15840000POWER_SUPPLY_POWER_NOW=27656000POWER_SUPPLY_ENERGY_FULL_DESIGN=60000000POWER_SUPPLY_ENERGY_FULL=52260000POWER_SUPPLY_ENERGY_NOW=26660000POWER_SUPPLY_CAPACITY=51POWER_SUPPLY_CAPACITY_LEVEL=NormalPOWER_SUPPLY_MODEL_NAME=L14M4P23POWER_SUPPLY_MANUFACTURER=SMPPOWER_SUPPLY_SERIAL_NUMBER= 7561480000015840000