ฉันจะตรวจสอบสถานะของแบตเตอรี่ผ่านทางเทอร์มินัลได้อย่างไร


320

ฉันต้องการคำสั่งที่แสดงสถานะแบตเตอรี่ในเทอร์มินัล


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

คำตอบ:


335

คำสั่งด้านล่างแสดงสถานะล็อตและข้อมูลสถิติเกี่ยวกับแบตเตอรี่ /org/...เส้นทางที่สามารถพบได้กับคำสั่งupower -e( --enumerate)

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

ตัวอย่างผลลัพธ์:

  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

คุณสามารถใช้เครื่องมือเช่น grep เพื่อรับข้อมูลที่คุณต้องการจากผลลัพธ์ทั้งหมด

วิธีง่ายๆอย่างหนึ่ง: การไพพ์คำสั่งข้างต้นลงใน

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

เอาท์พุท:

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

หากคุณต้องการเรียกใช้คำสั่งนั้นบ่อยครั้งคุณสามารถสร้าง Bash alias สำหรับคำสั่งทั้งหมดได้ ตัวอย่าง:

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

เพิ่มเข้าไปที่ท้ายไฟล์. bashrc ของคุณและคุณสามารถพิมพ์ 'bat' ได้ทุกเมื่อในเทอร์มินัล

นอกจากนี้ยังมีคำสั่งupower -d( --dump) ที่แสดงข้อมูลสำหรับแหล่งพลังงานที่มีอยู่ทั้งหมดเช่นแบตเตอรี่แล็ปท็อปหนูภายนอกเป็นต้น


9
upower --enumerateมีประโยชน์หากคุณไม่แน่ใจว่าจะใช้งานupowerอย่างไร
landroni

5
@landroni และตัวเลือกที่จดชวเลขเป็นคำสั่งที่แสดงเส้นทางที่สามารถใช้ได้สำหรับupower -e upower -i ...หากคุณขี้เกียจและต้องการรายการอุปกรณ์ทั้งหมดให้ใช้upower -d( upower --dump)
Lekensteyn

1
จริง ฉันคิดว่านี่จะเป็นประโยชน์เพิ่มเติมสำหรับคำตอบนั้นเมื่อฉันพยายามใช้ครั้งแรกupowerฉันจะหลงทางทันที
landroni

1
@landroni จุดดีฉันได้ปรับปรุงคำตอบ อย่าลังเลที่จะแก้ไขหากคุณมีส่วนเพิ่มเติมที่เกี่ยวข้องเพิ่มเติม
Lekensteyn

8
อีกหนึ่งสายการบินอาจจะเป็นupower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\ full|to\ empty|percentage"
วิลฟ์

124

เตือนมิตร : ตั้งแต่ลินุกซ์เคอร์เนล2.6.24ใช้/procในการจัดเก็บข้อมูล ACPI ได้รับกำลังใจและเลิกใช้

ตอนนี้เราได้รับการสนับสนุนการใช้งาน /sys/class/power_supply/BAT0->

อัปเดต: Linux 3.19 ขึ้นไปเราควรดูที่ไดเรกทอรีดังต่อไปนี้ -> /sys/class/power_supply/BAT1/

ตัวอย่างเช่นการตรวจสอบความจุ & สถานะบน Arch Linux ที่ใช้ 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
โดยเฉพาะอย่าง/sys/class/power_supply/BAT0/capacityดูเหมือนจะแสดงเปอร์เซ็นต์ค่าใช้จ่ายในปัจจุบัน
thomasa88

เลิกใช้แล้ว ...มันยังใช้งานได้หรือไม่
neverMind9

3
+1 นี่ควรเป็นคำตอบที่ยอมรับได้เนื่องจากไม่ต้องพึ่งพาซอฟต์แวร์เพิ่มเติมที่อาจไม่ได้ติดตั้งและไม่จำเป็นต้องตอบคำถามนี้ @ neverMind9: ฉันไม่รู้ว่าสิ่งที่คุณหมายถึง/procเลิกใช้แล้ว แต่/sysทำงานได้อย่างสมบูรณ์แบบสำหรับฉันแม้ในเคอร์เนล 4.20
comfreak

1
@comfreak ใช้งานได้สำหรับฉันเช่นกันจริง ๆ
NeverMind9

1
ไม่เพียงแค่นี้ควรเป็นคำตอบ accepter แต่การดึงข้อมูลสามารถทำได้โดยใช้ภาษาการเขียนโปรแกรมใด ๆ ที่มีreadฟังก์ชั่นเช่นใน PHP $capacity = trim(file_get_contents("/sys/class/power_supply/BAT0/capacity"));ทำให้มันง่ายสุดและไม่ขึ้นกับการพึ่งพาภายนอกใด ๆ
Amin NAIRI

67

ก่อนติดตั้งacpiโดยใช้คำสั่งนี้

sudo apt-get install acpi

จากนั้นเรียกใช้:

acpi

ตัวอย่างผลลัพธ์:

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

หรือสำหรับเอาต์พุต verbose เพิ่มเติมที่อัพเดตอย่างต่อเนื่อง:

watch --interval=5 acpi -V

เอาท์พุท:

ทุก ๆ 5.0s: acpi -V พุธ 8 มกราคม 15:45:35 2014

แบตเตอรี่ 0: เต็ม 100%
อะแดปเตอร์ 0: ออนไลน์
ความร้อน 0: ตกลง, 44.0 องศาเซลเซียส
ความร้อน 0: จุดเดินทาง 0 สลับไปที่โหมดวิกฤติที่อุณหภูมิ 127.0 องศาเซลเซียส
ความร้อน 0: จุดเดินทาง 1 เปลี่ยนเป็นโหมดร้อนที่อุณหภูมิ 127.0 องศาเซลเซียส
การทำให้เย็นลง 0: intel_powerclamp ไม่มีข้อมูลสถานะให้ใช้
การระบายความร้อน 1: pkg-temp-0 ไม่มีข้อมูลสถานะ
คูลลิ่ง 2: LCD 100 จาก 100
คูลลิ่ง 3: จอแอลซีดี 100 จาก 100
คูลลิ่ง 4: โปรเซสเซอร์ 0 จาก 10
คูลลิ่ง 5: โปรเซสเซอร์ 0 จาก 10
คูลลิ่ง 6: โปรเซสเซอร์ 0 จาก 10
คูลลิ่ง 7: โปรเซสเซอร์ 0 จาก 10
คูลลิ่ง 8: โปรเซสเซอร์ 0 จาก 10
คูลลิ่ง 9: โปรเซสเซอร์ 0 จาก 10
คูลลิ่ง 10: โปรเซสเซอร์ 0 จาก 10
คูลลิ่ง 11: โปรเซสเซอร์ 0 จาก 10

29

ขอบคุณ @Wilf สิ่งนี้ใช้ได้กับ Ubuntu 17.10 ของฉันบน Lenovo Yoga 720:

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

เอาท์พุท:

state:               fully-charged
percentage:          100%

หรือเพียงแค่ค่าตัวเลขกับซับอันนี้

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

ในFedora 23ฉันต้อง grep batteryแทนBATเพื่อให้มันทำงานได้ upower --enumerateฉันพบว่ามี
erik

grep สำหรับbatteryงานใน Ubuntu ก็เลยเปลี่ยนจากBAT
rubo77

28

การพิมพ์คำสั่งก็เพียงพอแล้ว

acpi

สำหรับข้อมูลรายละเอียดคุณสามารถพิมพ์

acpi -V

ฉันไม่ต้องติดตั้งแพ็กเกจใด ๆ มาก่อน

ระบบ: เดเบียน 7.2 64 บิต


19

นี่คือบทความเกี่ยวกับแพคเกจที่สามารถตรวจสอบอายุแบตเตอรี่ของคุณที่บรรทัดคำสั่ง

โดยพื้นฐานแล้วสิ่งที่คุณต้องทำคือ:

sudo apt-get install acpi
acpi -V

18

บางทีคุณสามารถลอง:

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info


23
การใช้/procเพื่อจัดเก็บข้อมูล ACPI ได้รับการสนับสนุนและเลิกใช้ตั้งแต่ 2.6.24 ตอนนี้มัน/sys/class/power_supply/BAT0มา
เทอร์รี่วัง

14

ฉันไปงานเลี้ยงสายนิดหน่อย แต่นี่คือส่วนเล็ก ๆ ของฉัน จากคำตอบก่อนหน้านี้ฉันได้สร้างสคริปต์ง่ายๆ:

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

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

เอาต์พุตสำหรับการดำเนินการนี้ (./batpower) จะเป็นดังนี้:

POWER_SUPPLY_CAPACITY=23

หมายเหตุ: หมายเลข batery อาจแตกต่างกันสำหรับคุณในกรณีของฉันคือ BAT1 แต่คุณสามารถค้นหาได้โดย cd'ing ถึง / sys / class / power_supply หรือตามที่ Lekensteyn พูดถึงผ่าน upower -e

เครื่องของฉัน: Ubuntu 13.10, 3.11.0

แทนที่BAT1ในโค้ด bash ด้านบนเป็นBAT0หากคุณมี Ubuntu รุ่นเก่ากว่าเช่น 13.04 หรือใหม่กว่า

สคริปต์ที่ปรับปรุงใหม่:ตั้งแต่โพสต์ดั้งเดิมของฉันฉันได้ปรับปรุงสคริปต์เล็กน้อย:

#!/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 

และเช่นเคยให้ความสนใจกับช่องว่างด้วยการทุบตี นี่คือการอธิบายตนเองทั้งหมด หากแบตเตอรี่มีอยู่ก็จะปรากฏขึ้นหากไม่ได้ - สคริปต์จะบอกให้คุณทราบ ตอนนี้ไปที่ไฟล์. bashrc ของคุณและเพิ่ม $ (batpower) ไปที่พรอมต์ของคุณ นี่คือพรหมของฉัน:

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

อัปเดตเทอร์มินัลของคุณหรือเปิดแท็บหรือหน้าต่างใหม่และตอนนี้คุณสามารถตรวจสอบการชาร์จแบตเตอรี่อย่างต่อเนื่องในเทอร์มินัล! รวมถึง tty ด้วย! ขอให้สคริปต์ได้รับการยกย่อง! ป้อนคำอธิบายรูปภาพที่นี่


คุณต้องตรวจสอบ/sys/class/power_supply/BAT0และ/sys/class/power_supply/BAT1... มันสามารถเป็นได้ทั้ง และคุณควรใช้เส้นทางนั้น ( /sys/class/power_supply/BAT#)
dylnmc

ในเน็ตบุ๊ก Ubuntu 12.04 ของฉัน (หลังจากเปลี่ยนเป็น BAT0) ดูเหมือนว่าฉันจะไม่ได้รับบรรทัด POWER_SUPPLY_CAPACITY ดูเหมือนว่าฉันสามารถคำนวณได้จากค่า POWER_SUPPLY_CHARGE_FULL และ POWER_SUPPLY_CHARGE_NOW
mwfearnley

Upvoted แต่แบทแมน (ผู้จัดการแบตเตอรี่) มีจิตใต้สำนึกดีกว่า Batpower :) ในโน้ตที่จริงจังมันน่าสนใจที่คุณเขียนใน AskUbuntu ในปี 2014 และวันนี้คุณแตกต่างกันอย่างไร
WinEunuuchs2Unix

@ WinEunuuuchs2Unix ใช่ฉันเปลี่ยนไปบ้างตั้งแต่เริ่มเรียนรู้เทคนิคใหม่ ๆ แบทแมนจะมีแหวนที่ดี แต่มันน่าจะเป็นลิขสิทธิ์;)
Sergiy Kolodyazhnyy

10

คุณสามารถทำได้โดยไม่ต้องติดตั้งแพ็คเกจเพิ่มเติม:

$ 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%

คำสั่งนี้จะถูกยกขึ้นจากแหล่งที่มาของ byobu มันอาจจะเป็นผู้สมัครที่ดีสำหรับนามแฝงทุบตี


+1 จากฉัน! CLI FTW หากคุณมีการเปลี่ยนแปลงแบตเตอรี 2 ก้อนสำหรับแบทเทอร์ 1: 2
Rinzwind

หมดกำลังใจตั้งแต่ 2.6.24 เราควรใช้/sys/class/power_supply/BAT0/
Pablo A

9

รันคำสั่งต่อไปนี้ในเทอร์มินัลเพื่อรับข้อมูลรายละเอียด:

cat /proc/acpi/battery/BAT0/info

หากคุณต้องการให้รัฐทำ:

cat /proc/acpi/battery/BAT0/state

สิ่งนี้ถูกท้อแท้ในคำตอบที่เหมือนกัน
Pablo A

6

ติดตั้ง acpi จากนั้นใช้watchเพื่อตรวจสอบบรรทัดคำสั่งผ่านอย่างต่อเนื่อง

เช่น

watch --interval=5 acpi -V

จะแสดงข้อมูลเช่นด้านล่างและจะอัพเดททุก 5 วินาที

แบตเตอรี่ 0: เต็ม, 100%, ไม่มีข้อมูลอัตรา
แบตเตอรี่ 0: ความจุการออกแบบ 6000 mAh, กำลังการผลิตเต็มที่สุดท้าย 3424 mAh = 57%

คำถามคือทำไมมีคนทำเช่นนี้? ฉันมีแล็ปท็อปที่มีหน้าจอ LCD แตกซึ่งตอนนี้ฉันใช้เป็นกล่องบิตซอร์เรนต์



4

ฉันจะแนะนำacpiแต่หลังจากอ่านแล้วมันไม่ทำงานใน 11.10 ฉันมีความคิด

โปรดพิมพ์สิ่งนี้ในเทอร์มินัลของคุณ: ls /proc/acpi/battery/BAT0 หรือBAT1

หากคุณได้รับ "ไฟล์หรือไดเรกทอรีไม่พบ" สิ่งนี้จะไม่ทำงาน

แต่ถ้ามันแสดงรายการไฟล์นี่เป็นสคริปต์[วางลงใน / usr / games / หรือไดเรกทอรีอื่น ๆ ใน $ PATH และเรียกใช้sudo chmod +x /usr/games/batterypercentหรือชื่อที่คุณตั้งไว้]ที่ฉันเพิ่งเขียนถึงคุณซึ่งจะให้เปอร์เซ็นต์แบตเตอรี่โดยประมาณ [ดูด้านล่าง]:

(หมายเหตุหากไม่ได้ติดตั้งไว้แล้วติดตั้งโปรแกรมcalcจาก 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)%

ฉันได้ทดสอบสคริปต์นี้บนแล็ปท็อปของฉัน ฉันบอกว่าประมาณข้างต้นเพราะacpiแสดงแบตเตอรี่ 93% และสคริปต์ของฉันแสดงแบตเตอรี่ 90% ดังนั้นลองใช้สคริปต์นี้เทียบกับเปอร์เซ็นต์แบตเตอรี่ GUI ของคุณและดูว่ามันเป็นอย่างไร ในกรณีของฉันดูเหมือนว่าจะต่ำกว่าอัตราร้อยละของ acpi 3% อย่างสม่ำเสมอ ในกรณีนั้นคุณสามารถเพิ่มบรรทัดนี้ก่อนบรรทัดสุดท้าย: percent=$((percent + 3))โดยที่ "3" คือเปอร์เซ็นต์ที่ต่ำ

** ใน lenovo ของฉันแบตเตอรี่แสดงรายการเป็น BAT1 ลองด้วยเช่นกัน (12.04 LTS)


แมตต์ลองข้อเสนอแนะของคุณได้รับ "ไม่มีไฟล์หรือไดเรกทอรี"
Joe

โอเคฉันเกือบจะเป็นบวกนี่คือเหตุผลที่ acpiใช้งานไม่ได้เพราะฉันเดาว่า 11.10 ไม่รองรับฟังก์ชั่น ACPI ของแล็ปท็อปของคุณเช่นกัน [แบตเตอรี่ ฯลฯ ] ฉันคิดว่าฉันเคยมีประสบการณ์เช่นนี้เมื่ออัพเกรดในอดีต ฉันยังอยู่ที่ 11.04 ขออภัยที่ว่านี้ไม่ได้ทำงานสำหรับยา :(
แมตต์

ดังนั้นแค่อยากรู้อยากเห็นคุณสามารถวางผลลัพธ์ของls /proc/acpi/? ขอบคุณ
แมตต์

1

สคริปต์ที่คล้ายกันโดยไม่มี calc หรือ 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

นี่คือสิ่งที่ฉันใช้ เพียงแค่ดูความแตกต่างระหว่างการชาร์จเต็มและค่าใช้จ่ายในปัจจุบันเช่นเดียวกับการดูว่าค่าใช้จ่ายลดลงซึ่งในกรณีนี้จะใช้การแจ้งเตือนเพื่อแจ้งเตือนผู้ใช้

#!/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

เราสามารถสะท้อนเปอร์เซ็นต์ด้วยคำสั่งนั้น

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

65%

ในกรณีที่คุณต้องการแยกค่านั้น


0

สิ่งนี้จะไม่ช่วยให้ทุกคน แต่มันทำให้ฉัน - ฉันใช้byobuทุกครั้งที่ฉันใช้เทอร์มินัลและแบตเตอรี่เป็นหนึ่งในตัวเลือกสำหรับแถบการแจ้งเตือนสถานะ


0

คุณสามารถพิมพ์:

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

หรือ

$ 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.