Làm cách nào để kiểm tra trạng thái của pin qua thiết bị đầu cuối?


320

Tôi muốn một lệnh hiển thị trạng thái pin trong thiết bị đầu cuối.


29
$ upower -i $(upower -e | grep 'BAT') | grep -E "state|to\ full|percentage"
Jake Berger

Câu trả lời:


335

Lệnh dưới đây đưa ra rất nhiều trạng thái và thông tin thống kê về pin. Đường /org/...dẫn có thể được tìm thấy bằng lệnh upower -e( --enumerate).

upower -i /org/freedesktop/UPower/devices/battery_BAT0

Ví dụ đầu ra:

  native-path:          /sys/devices/LNXSYSTM:00/device:00/PNP0C0A:00/power_supply/BAT0
  vendor:               NOTEBOOK
  model:                BAT
  serial:               0001
  power supply:         yes
  updated:              Thu Feb  9 18:42:15 2012 (1 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               charging
    energy:              22.3998 Wh
    energy-empty:        0 Wh
    energy-full:         52.6473 Wh
    energy-full-design:  62.16 Wh
    energy-rate:         31.6905 W
    voltage:             12.191 V
    time to full:        57.3 minutes
    percentage:          42.5469%
    capacity:            84.6964%
    technology:          lithium-ion
  History (charge):
    1328809335  42.547  charging
    1328809305  42.020  charging
    1328809275  41.472  charging
    1328809245  41.008  charging
  History (rate):
    1328809335  31.691  charging
    1328809305  32.323  charging
    1328809275  33.133  charging

Bạn có thể sử dụng các công cụ như grep để lấy thông tin bạn muốn từ tất cả đầu ra đó.

Một cách đơn giản: chuyển lệnh trên vào

grep -E "state|to\ full|percentage"

đầu ra:

state:               charging
time to full:        57.3 minutes
percentage:          42.5469%

Nếu bạn thường muốn chạy lệnh đó, thì bạn có thể tạo bí danh Bash cho toàn bộ lệnh. Thí dụ:

alias bat='upower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state|to\ full|percentage"'

Thêm nó vào cuối tệp .bashrc của bạn và bạn có thể nhập 'bat' bất cứ lúc nào, trong thiết bị đầu cuối.

Ngoài ra còn có một lệnh upower -d( --dump) hiển thị thông tin cho tất cả các nguồn năng lượng có sẵn như pin máy tính xách tay, chuột ngoài, v.v.


9
upower --enumeratecó thể hữu ích nếu bạn không chắc chắn làm thế nào để sử dụng upower.
landroni

5
@landroni Và tùy chọn tốc ký là upower -e, lệnh đó liệt kê các đường dẫn có sẵn cho upower -i .... Nếu bạn lười biếng và chỉ muốn một danh sách tất cả các thiết bị, hãy sử dụng upower -d( upower --dump).
Lekensteyn

1
Thật. Tôi nghĩ rằng đây sẽ là một bổ sung hữu ích cho chính câu trả lời, vì khi tôi lần đầu tiên thử sử dụng, upowertôi đã ngay lập tức bị lạc.
Landroni

1
@landroni Điểm tốt, tôi đã cập nhật câu trả lời. Hãy chỉnh sửa nó nếu bạn có thêm các bổ sung liên quan.
Lekensteyn

8
Một lớp lót khác có thể làupower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\ full|to\ empty|percentage"
Wilf

124

Một lời nhắc nhở thân thiện : vì Linux kernel 2.6.24 sử dụng /procđể lưu trữ thông tin ACPI đã không được khuyến khíchkhông dùng nữa .

Bây giờ chúng tôi được khuyến khích sử dụng -> /sys/class/power_supply/BAT0.

CẬP NHẬT: Linux 3.19 trở đi, chúng ta nên xem thư mục sau -> /sys/class/power_supply/BAT1/

Ví dụ: kiểm tra dung lượng & trạng thái trên Arch Linux chạy Linux 4.20 ->

# uname -a
Linux netbook 4.20.1-arch1-1-ARCH #1 SMP PREEMPT Wed Jan 9 20:25:43 UTC 2019 x86_64 GNU/Linux
# cat /sys/class/power_supply/BAT1/capacity
99
# cat /sys/class/power_supply/BAT1/status
Charging

1
Cụ thể, /sys/class/power_supply/BAT0/capacitydường như hiển thị phần trăm phí hiện tại.
thomasa88

Phản đối ... nó vẫn làm việc?
neverMind9

3
+1, đây phải là câu trả lời được chấp nhận, vì nó không dựa vào phần mềm bổ sung có thể không được cài đặt và không cần thiết để trả lời câu hỏi này. @ neverMind9: Tôi không biết ý của bạn là gì /procnhưng không /syshoạt động hoàn hảo với tôi, ngay cả trong kernel 4.20.
comfreak

1
@comfreak Hoạt động với tôi là tốt, thực sự.
neverMind9

1
Đây không chỉ là câu trả lời, mà việc lấy dữ liệu có thể đạt được bằng cách sử dụng bất kỳ ngôn ngữ lập trình nào có readchức năng như trong PHP $capacity = trim(file_get_contents("/sys/class/power_supply/BAT0/capacity"));làm cho nó trở nên siêu dễ dàng và không phụ thuộc vào bất kỳ phụ thuộc bên ngoài nào.
Amin NAIRI

67

Cài đặt đầu tiên acpibằng cách chạy lệnh này,

sudo apt-get install acpi

Sau đó chạy:

acpi

Đầu ra mẫu:

Battery 0: Discharging, 61%, 01:10:12 remaining

Hoặc cho một đầu ra dài dòng hơn liên tục cập nhật:

watch --interval=5 acpi -V

Đầu ra:

Cứ sau 5.0 giây: acpi -V Thứ Tư 8 tháng 1 15:45:35 2014

Pin 0: Đầy đủ, 100%
Bộ chuyển đổi 0: trực tuyến
Nhiệt 0: ok, 44,0 độ C
Nhiệt 0: điểm ngắt 0 chuyển sang chế độ quan trọng ở nhiệt độ 127,0 độ C
Nhiệt 0: điểm ngắt 1 chuyển sang chế độ nóng ở nhiệt độ 127,0 độ C
Làm mát 0: intel_powerclamp không có thông tin trạng thái
Làm mát 1: pkg-temp-0 không có thông tin trạng thái
Làm mát 2: LCD 100 trên 100
Làm mát 3: LCD 100 trên 100
Làm mát 4: Bộ xử lý 0 trên 10
Làm mát 5: Bộ xử lý 0 trên 10
Làm mát 6: Bộ xử lý 0 trên 10
Làm mát 7: Bộ xử lý 0 trên 10
Làm mát 8: Bộ xử lý 0 trên 10
Làm mát 9: Bộ xử lý 0 trên 10
Làm mát 10: Bộ xử lý 0 trên 10
Làm mát 11: Bộ xử lý 0 trên 10

29

Nhờ @Wilf, tính năng này hoạt động trên Ubuntu 17.10 của tôi trên Lenovo Yoga 720:

upower -i $(upower -e | grep '/battery') | grep --color=never -E "state|to\ full|to\ empty|percentage"

Đầu ra:

state:               fully-charged
percentage:          100%

Hoặc chỉ là giá trị số với một lớp lót này

upower -i $(upower -e | grep '/battery') | grep --color=never -E percentage|xargs|cut -d' ' -f2|sed s/%//

Trên Fedora 23 tôi đã phải grep batterythay vì BATđể nó hoạt động. Tôi thấy rằng với upower --enumerate.
erik

grep cho batterycác công việc trong Ubuntu cũng vậy, vì vậy tôi đã thay đổi nó từBAT
rubo77

28

Nó đủ để gõ lệnh

acpi

Để biết thông tin chi tiết bạn có thể gõ

acpi -V

Tôi đã không phải cài đặt bất kỳ gói trước đó.

Hệ thống: Debian 7.2 64 bit


19

Dưới đây là một bài viết về một gói có thể kiểm tra thời lượng pin của bạn tại dòng lệnh.

Về cơ bản, tất cả những gì bạn phải làm là:

sudo apt-get install acpi
acpi -V

18

Có lẽ bạn có thể thử:

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info


23
sử dụng /procđể lưu trữ thông tin ACPI đã không được khuyến khích và không dùng nữa kể từ 2.6.24. Bây giờ nó vào /sys/class/power_supply/BAT0.
Terry Wang

14

Tôi đến bữa tiệc muộn một chút nhưng đây là đóng góp nhỏ của tôi. Dựa trên các câu trả lời trước đó, tôi đã tạo ra một batpower kịch bản đơn giản:

#!/bin/bash
# Description: Battery  charge in percentage

grep POWER_SUPPLY_CAPACITY /sys/class/power_supply/BAT1/uevent

Đầu ra để thực hiện điều này (./batpower) sẽ giống như thế này:

POWER_SUPPLY_CAPACITY=23

Lưu ý: số batery có thể khác với bạn, trong trường hợp của tôi là BAT1, nhưng bạn luôn có thể tìm ra nó bằng cách gửi đến / sys / class / power_supply hoặc như Lekensteyn đã đề cập qua upower -e

Máy của tôi: Ubuntu 13.10, 3.11.0

Thay thế BAT1 trong mã bash ở trên thành BAT0 nếu bạn có phiên bản cũ hơn Ubuntu tức là 13.04 trở lên.

SCRIPT IMPROVED: Kể từ bài viết gốc của tôi, tôi đã thực hiện một cải tiến nhỏ cho tập lệnh:

#!/bin/bash
# Description: Battery  charge in percentage

if [ -f /sys/class/power_supply/BAT1/uevent ]
    then grep POWER_SUPPLY_CAPACITY /sys/class/power_supply/BAT1/uevent

else echo "Battery isn't present"

fi 

Như mọi khi, chú ý đến không gian với bash. Đây là tất cả tự giải thích. Nếu có pin, nó sẽ hiển thị, nếu không - tập lệnh sẽ cho bạn biết như vậy. Bây giờ, hãy truy cập tệp .bashrc của bạn và thêm $ (batpower) vào dấu nhắc của bạn. Đây là quảng cáo của tôi:

PS1='[$(batpower)]\n${debian_chroot:+($debian_chroot)}[*\u@Ubuntu*]:\w\$ ' 

Cập nhật thiết bị đầu cuối của bạn hoặc mở tab hoặc cửa sổ mới, và bây giờ bạn có thể theo dõi sạc pin liên tục trong thiết bị đầu cuối! bao gồm cả tty! Có thể kịch bản được ca ngợi! nhập mô tả hình ảnh ở đây


Bạn cần kiểm tra /sys/class/power_supply/BAT0/sys/class/power_supply/BAT1... Nó có thể là một trong hai. Và bạn nên sử dụng đường dẫn đó ( /sys/class/power_supply/BAT#).
dylnmc

Trong netbook Ubuntu 12.04 của tôi (sau khi đổi thành BAT0), tôi dường như không nhận được dòng POWER_SUPPLY_CAPACITY. Dường như tôi có thể tính toán nó, từ các giá trị POWER_SUPPLY_CHARGE_FULL và POWER_SUPPLY_CHARGE_NOW.
mwfearnley

Được nâng cấp nhưng Batman (Người quản lý pin) trong tiềm thức có một chiếc nhẫn đẹp hơn Batpower :) Một lưu ý nghiêm trọng, thật thú vị khi bạn viết trong AskUb Ubuntu vào năm 2014 và bạn khác biệt như thế nào hôm nay.
WinEunuuchs2Unix

@ WinEunuuuchs2Unix Vâng, tôi đã thay đổi phần nào kể từ khi bắt đầu, học một vài thủ thuật mới. Người dơi sẽ có một chiếc nhẫn đẹp với nó nhưng nó có khả năng có bản quyền;)
Sergiy Kolodyazhnyy

10

Bạn có thể làm điều đó mà không cần cài đặt bất kỳ gói bổ sung:

$ echo $((100*$(sed -n "s/remaining capacity: *\(.*\) m[AW]h/\1/p" /proc/acpi/battery/BAT0/state)/$(sed -n "s/last full capacity: *\(.*\) m[AW]h/\1/p" /proc/acpi/battery/BAT0/info)))%
94%

Lệnh này được gỡ bỏ từ nguồn của byobu . Nó có thể là một ứng cử viên tốt cho bí danh Bash .


+1 từ tôi! CLI FTW. Nếu bạn có 2 pin, hãy đổi BAT0 cho BAT1 :)
Rinzwind

Không khuyến khích kể từ 2.6.24, chúng ta nên sử dụng/sys/class/power_supply/BAT0/
Pablo A

9

Chạy lệnh sau trong một thiết bị đầu cuối để có được thông tin chi tiết:

cat /proc/acpi/battery/BAT0/info

Nếu bạn chỉ muốn nhà nước làm:

cat /proc/acpi/battery/BAT0/state

Điều này đã được khuyến khích trong câu trả lời giống hệt khác.
Pablo A

6

Cài đặt acpi, sau đó sử dụng watchđể liên tục theo dõi dòng lệnh thông qua.

Ví dụ

watch --interval=5 acpi -V

sẽ hiển thị thông tin như bên dưới và sẽ cập nhật cứ sau 5 giây.

Pin 0: Đầy đủ, 100%, thông tin tốc độ không có sẵn
Pin 0: dung lượng thiết kế 6000 mAh, dung lượng đầy đủ cuối cùng 3424 mAh = 57%

Câu hỏi là tại sao ai đó sẽ làm điều này? Vâng, tôi có một máy tính xách tay với màn hình LCD bị hỏng mà bây giờ tôi đang sử dụng làm hộp bittorrent của mình.


5

Điều này đã làm công việc cho tôi trong Ubuntu 14.04:

cat /sys/class/power_supply/BAT0/capacity

4

Tôi định đề nghị acpinhưng sau khi đọc nó không hoạt động vào ngày 11.10, tôi có một ý tưởng.

Vui lòng nhập này trong thiết bị đầu cuối của bạn: ls /proc/acpi/battery/BAT0 hoặcBAT1

Nếu bạn nhận được một "tập tin hoặc thư mục không tìm thấy" thì điều này sẽ không hoạt động.

Nhưng, nếu nó liệt kê các tệp, thì đây là tập lệnh [dán nó vào / usr / games / hoặc thư mục khác trong $ PATH và chạy sudo chmod +x /usr/games/batterypercenthoặc bất cứ thứ gì bạn đặt tên] mà tôi vừa viết cho bạn sẽ cung cấp cho bạn tỷ lệ phần trăm pin ước tính [Xem bên dưới]:

(Lưu ý, nếu chưa được cài đặt, hãy cài đặt chương trình calctừ repo sudo apt-get install apcalc:)

#!/bin/bash
math() { calc -d "$@"|tr -d ~; }
cd /proc/acpi/battery/BAT0;
max=$(grep 'design capacity:' info|awk '{print $3}')
current=$(grep 'remaining capacity:' state|awk '{print $3}')
percent=$(math "($current / $max) * 100");
echo $(echo $percent|cut -d. -f1)%

Tôi đã thử kịch bản này trên máy tính xách tay của tôi. Tôi nói ước tính ở trên vì acpihiển thị 93% pin và tập lệnh của tôi hiển thị 90% pin, vì vậy hãy thử tập lệnh này so với tỷ lệ phần trăm pin GUI của bạn và xem nó tắt như thế nào. Trong trường hợp của tôi, nó dường như thấp hơn 3% so với tỷ lệ phần trăm của acpi. Trong trường hợp đó, bạn có thể thêm dòng này ngay trước dòng cuối cùng : percent=$((percent + 3)), trong đó "3" là tỷ lệ phần trăm thấp.

** Trong lenovo của tôi, pin được liệt kê là BAT1, hãy thử điều đó. (12.04 LTS)


Matt, đã thử đề xuất của bạn, nhận được "Không có tệp hoặc thư mục"
Joe

Argh .. okay, tôi gần như tích cực, đây là lý do tại sao acpi không hoạt động, vì tôi đoán 11.10 không hỗ trợ các chức năng ACPI của máy tính xách tay của bạn cũng như [pin, v.v.]. Tôi nghĩ rằng tôi đã trải nghiệm một cái gì đó như thế này khi nâng cấp trong quá khứ. Tôi vẫn còn vào ngày 11.04. Xin lỗi vì điều này không hiệu quả với bạn :(
Matt

Vì vậy, chỉ tò mò, bạn có thể dán đầu ra của ls /proc/acpi/? Cảm ơn
Matt

1

Kịch bản tương tự không có calc hoặc apcalc:

#! /bin/bash
cd /proc/acpi/battery/BAT0;
max=$(grep 'design capacity:' info|awk '{print $3}')
current=$(grep 'remaining capacity:' state|awk '{print $3}')
percent=$(expr $current"00" / $max )
echo -e "Current capacity: \t$current"
echo -e "Max capacity:  \t$max"
echo -e "Percent: \t\t$percent"

1

Đây là những gì tôi sử dụng. Nó chỉ nhìn vào sự khác biệt giữa sạc đầy và sạc hiện tại cũng như xem liệu phí có giảm hay không trong trường hợp sử dụng thông báo để cảnh báo người dùng.

#!/bin/bash
#
# experimental battery discharge alerter
#
nsecs=3 # loop sleep time between readings
#
ful=$(cat /sys/class/power_supply/BAT0/energy_full)
#
oldval=0
while true
do
  cur=$(cat /sys/class/power_supply/BAT0/energy_now)
  dif="$((ful - cur))"
  slope="$((cur - oldval))"
  if [ "$slope" -lt 0 ]
  then
    echo "*** discharging!"
    notify-send -u critical -i "notification-message-IM" "discharging"
  fi
 oldval=$cur
 sleep $nsecs
done

1

Chúng ta có thể lặp lại tỷ lệ phần trăm với lệnh đó

upower -i $(upower -e | grep 'BAT') | grep -E "state|to\ full|percentage" | awk '/perc/{print $2}'

65%

trong trường hợp bạn cần trích xuất giá trị đó


0

Điều này sẽ không giúp được tất cả mọi người, nhưng nó đã giúp tôi - Tôi sử dụng byobu bất cứ khi nào tôi đang sử dụng thiết bị đầu cuối và pin là một trong những tùy chọn cho thanh thông báo trạng thái.


0

Bạn có thể gõ:

$ acpi -i
Battery 0: Discharging, 98%, 02:51:14 remaining
Battery 0: design capacity 4400 mAh, last full capacity 3733 mAh = 84%

hoặc là

$ upower -i $(upower -e | grep BAT)
  native-path:          BAT0
  model:                PA5109U-1BRS
  serial:               FA80
  power supply:         yes
  updated:              lun. 07 janv. 2019 03:54:18 CET (24 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               discharging
    energy:              39,521 Wh
    energy-empty:        0 Wh
    energy-full:         40,328 Wh
    energy-full-design:  47,52 Wh
    energy-rate:         13,856 W
    voltage:             10,8 V
    time to empty:       2,9 hours
    percentage:          98%
    capacity:            84,8632%
    technology:          lithium-ion
  History (charge):
    1546829628  98,000  discharging
    1546829593  99,000  discharging
  History (rate):
    1546829658  13,856  discharging
    1546829628  14,752  discharging
    1546829597  4,806   discharging
    1546829594  2,678   discharging

-4
cat /proc/acpi/ac_adapter/AC/state

3
không chắc chắn những gì bạn đang nói về ở đây. chạy nó trong thiết bị đầu cuối đã chocat: /proc/acpi/ac_adapter/AC0/state: No such file or directory
tin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.