Câu trả lời:
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.
upower --enumerate
có thể hữu ích nếu bạn không chắc chắn làm thế nào để sử dụng upower
.
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
).
upower
tôi đã ngay lập tức bị lạc.
upower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\ full|to\ empty|percentage"
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ích và khô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
/sys/class/power_supply/BAT0/capacity
dường như hiển thị phần trăm phí hiện tại.
/proc
nhưng không /sys
hoạt động hoàn hảo với tôi, ngay cả trong kernel 4.20.
read
chứ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.
Cài đặt đầu tiên acpi
bằ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
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/%//
battery
thay vì BAT
để nó hoạt động. Tôi thấy rằng với upower --enumerate
.
battery
các công việc trong Ubuntu cũng vậy, vì vậy tôi đã thay đổi nó từBAT
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
Có lẽ bạn có thể thử:
cat /proc/acpi/battery/BAT0/state
cat /proc/acpi/battery/BAT0/info
/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
.
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!
/sys/class/power_supply/BAT0
và /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#
).
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 .
/sys/class/power_supply/BAT0/
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
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.
Tôi định đề nghị acpi
như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/batterypercent
hoặ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 calc
từ 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ì acpi
hiể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)
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 :(
ls /proc/acpi/
? Cảm ơn
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"
Đâ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
Đ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.
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
$ upower -i $(upower -e | grep 'BAT') | grep -E "state|to\ full|percentage"