Bagaimana cara memeriksa status baterai melalui terminal?

320

Saya ingin perintah yang menampilkan status baterai di terminal.

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

Jawaban:

335

Perintah di bawah ini mengeluarkan banyak status dan informasi statistik tentang baterai. The /org/...path dapat ditemukan dengan perintah upower -e( --enumerate).

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

Contoh output:

  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

Anda dapat menggunakan alat seperti grep untuk mendapatkan informasi yang Anda inginkan dari semua keluaran itu.

Satu cara sederhana: memasukkan perintah di atas ke dalam

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

output:

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

Jika Anda sering ingin menjalankan perintah itu, maka Anda bisa membuat alias Bash untuk seluruh perintah. Contoh:

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

Tambahkan itu ke akhir file .bashrc Anda, dan Anda dapat mengetik 'bat' kapan saja, di terminal.

Ada juga perintah upower -d( --dump) yang menampilkan informasi untuk semua sumber daya yang tersedia seperti baterai laptop, mouse eksternal, dll.

Lekensteyn
sumber
9
upower --enumeratedapat bermanfaat jika Anda tidak yakin cara menggunakannya upower.
landroni
5
@ Landroni Dan opsi singkat adalah upower -e, perintah itu mencantumkan jalur yang tersedia untuk upower -i .... Jika Anda malas dan hanya ingin daftar semua perangkat, gunakan upower -d( upower --dump).
Lekensteyn
1
Memang. Saya pikir ini akan menjadi tambahan yang berguna untuk jawaban itu sendiri, karena ketika saya pertama kali mencoba menggunakan upowersaya langsung tersesat.
landroni
1
@ Landroni Poin bagus, saya telah memperbarui jawabannya. Jangan ragu untuk mengeditnya jika Anda memiliki tambahan terkait lainnya.
Lekensteyn
8
Satu kalimat lagi bisa jadiupower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\ full|to\ empty|percentage"
Wilf
124

Pengingat yang ramah : sejak Linux kernel 2.6.24 menggunakan /procuntuk menyimpan informasi ACPI telah putus asa dan usang .

Sekarang kami didorong untuk menggunakan -> /sys/class/power_supply/BAT0.

UPDATE: Linux 3.19 dan selanjutnya, kita harus melihat direktori berikut -> /sys/class/power_supply/BAT1/

Misalnya memeriksa kapasitas & status di Arch Linux yang menjalankan 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
Terry Wang
sumber
1
Secara khusus, /sys/class/power_supply/BAT0/capacitytampaknya menunjukkan persentase tagihan saat ini.
thomasa88
Sudah usang ... apakah masih berfungsi?
neverMind9
3
+1, ini harus menjadi jawaban yang diterima, karena tidak bergantung pada perangkat lunak tambahan yang mungkin tidak diinstal dan tidak diperlukan untuk menjawab pertanyaan ini. @ neverMind9: Saya tidak tahu maksud Anda /procsudah usang tetapi /sysberfungsi dengan baik untuk saya, bahkan di kernel 4.20.
comfreak
1
@comfreak Bekerja untuk saya juga, sebenarnya.
neverMind9
1
Tidak hanya ini yang harus menjadi jawaban penerima, tetapi mengambil data dapat dicapai dengan menggunakan bahasa pemrograman apa pun yang memiliki readfungsi seperti dalam PHP $capacity = trim(file_get_contents("/sys/class/power_supply/BAT0/capacity"));membuatnya sangat mudah dan tidak tergantung pada ketergantungan eksternal.
Amin NAIRI
67

Pertama instal acpidengan menjalankan perintah ini,

sudo apt-get install acpi

Lalu lari:

acpi

Output sampel:

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

Atau untuk output yang lebih verbal yang terus diperbarui:

watch --interval=5 acpi -V

Keluaran:

Setiap 5.0: acpi -V Rab 8 Jan 15:45:35 2014

Baterai 0: Penuh, 100%
Adaptor 0: online
Panas 0: ok, 44,0 derajat C
Thermal 0: trip point 0 beralih ke mode kritis pada suhu 127.0 derajat C
Panas 0: titik trip 1 beralih ke mode panas pada suhu 127,0 derajat C
Pendinginan 0: intel_powerclamp tidak ada informasi keadaan yang tersedia
Pendinginan 1: pkg-temp-0 tidak ada informasi keadaan tersedia
Pendinginan 2: LCD 100 dari 100
Pendinginan 3: LCD 100 dari 100
Pendinginan 4: Prosesor 0 dari 10
Pendinginan 5: Prosesor 0 dari 10
Pendinginan 6: Prosesor 0 dari 10
Pendinginan 7: Prosesor 0 dari 10
Pendinginan 8: Prosesor 0 dari 10
Pendinginan 9: Prosesor 0 dari 10
Pendinginan 10: Prosesor 0 dari 10
Pendinginan 11: Prosesor 0 dari 10
Suhaib
sumber
29

Berkat @Wilf ini berfungsi di Ubuntu 17.10 saya di Lenovo Yoga 720:

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

Keluaran:

state:               fully-charged
percentage:          100%

Atau hanya nilai numerik dengan liner satu ini

upower -i $(upower -e | grep '/battery') | grep --color=never -E percentage|xargs|cut -d' ' -f2|sed s/%//
rubo77
sumber
Pada Fedora 23, saya harus mencari tahu batteryalih - alih BATmembuatnya bekerja. Saya menemukan itu dengan upower --enumerate.
erik
grep untuk batterybekerja di Ubuntu juga, jadi saya mengubahnya dariBAT
rubo77
28

Cukup dengan mengetik perintah

acpi

Untuk informasi rinci, Anda dapat mengetik

acpi -V

Saya tidak perlu menginstal paket apa pun sebelumnya.

Sistem: Debian 7.2 64bit

pengguna309404
sumber
19

Berikut adalah artikel tentang paket yang dapat memeriksa masa pakai baterai Anda di baris perintah.

Pada dasarnya, yang harus Anda lakukan adalah:

sudo apt-get install acpi
acpi -V
omong kosong
sumber
18

Mungkin Anda bisa mencoba:

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info

Mariano L
sumber
23
menggunakan /procuntuk menyimpan info ACPI telah tidak disarankan dan ditinggalkan sejak 2.6.24. Sekarang di /sys/class/power_supply/BAT0.
Terry Wang
14

Saya sedikit terlambat ke pesta, tapi inilah kontribusi kecil saya. Berdasarkan jawaban sebelumnya, saya telah membuat script sederhana:

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

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

Output untuk mengeksekusi ini (./batpower) akan menjadi seperti ini:

POWER_SUPPLY_CAPACITY=23

NB: angka batery mungkin berbeda untuk Anda, dalam kasus saya itu adalah BAT1, tetapi Anda selalu dapat menemukannya dengan cd'ing ke / sys / class / power_supply atau seperti yang Lekensteyn sebutkan melalui upower -e

Mesin saya: Ubuntu 13.10, 3.11.0

Ganti BAT1 dalam kode bash di atas ke BAT0 jika Anda memiliki versi Ubuntu yang lebih lama yaitu 13,04 atau lebih baru.

MENINGKATKAN SCRIPT: Sejak posting asli saya, saya telah membuat sedikit perbaikan pada skrip:

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

Seperti biasa, perhatikan spasi dengan bash. Ini semua jelas. Jika baterai ada, itu akan muncul, jika tidak - skrip akan memberitahu Anda begitu. Sekarang, buka file .bashrc Anda dan tambahkan $ (batpower) ke prompt Anda. Inilah janji saya:

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

Perbarui terminal Anda atau buka tab atau jendela baru, dan sekarang Anda dapat memonitor pengisian baterai terus-menerus di terminal! termasuk tty! Semoga skripnya dipuji! masukkan deskripsi gambar di sini

Sergiy Kolodyazhnyy
sumber
Anda perlu memeriksa /sys/class/power_supply/BAT0dan /sys/class/power_supply/BAT1... Ini bisa berupa. Dan Anda harus menggunakan jalur itu ( /sys/class/power_supply/BAT#).
dylnmc
Di netbook Ubuntu 12.04 saya (setelah berganti ke BAT0), saya sepertinya tidak mendapatkan baris POWER_SUPPLY_CAPACITY. Sepertinya saya bisa menghitungnya, dari nilai POWER_SUPPLY_CHARGE_FULL dan POWER_SUPPLY_CHARGE_NOW.
mwfearnley
Terpilih tetapi Batman (Manajer Baterai) secara tidak sadar memiliki dering yang lebih bagus daripada Batpower :) Pada catatan yang serius menarik Anda menulis di AskUbuntu pada tahun 2014 dan betapa berbedanya Anda hari ini.
WinEunuuchs2Unix
@ WinEunuuuchs2Unix Ya, saya sudah agak berubah sejak saya mulai, belajar beberapa trik baru. batman akan memiliki cincin yang bagus untuk itu tetapi kemungkinan hak cipta;)
Sergiy Kolodyazhnyy
10

Anda dapat melakukannya tanpa menginstal paket tambahan:

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

Perintah ini diangkat dari sumber byobu . Itu mungkin kandidat yang baik untuk alias Bash .

ændrük
sumber
+1 dari saya! CLI FTW. Jika Anda memiliki 2 baterai, ganti BAT0 untuk BAT1 :)
Rinzwind
Apakah berkecil hati sejak 2.6.24, kita harus menggunakan/sys/class/power_supply/BAT0/
Pablo A
9

Jalankan perintah berikut di terminal untuk mendapatkan info terperinci:

cat /proc/acpi/battery/BAT0/info

Jika Anda hanya ingin negara melakukannya:

cat /proc/acpi/battery/BAT0/state
MEM
sumber
Ini tidak disarankan dalam jawaban identik lainnya.
Pablo A
6

Instal acpi, lalu gunakan watchuntuk terus memonitor melalui baris perintah.

Misalnya

watch --interval=5 acpi -V

akan menampilkan informasi seperti di bawah ini dan akan diperbarui setiap 5 detik.

Baterai 0: Penuh, 100%, informasi tingkat tidak tersedia
Baterai 0: kapasitas desain 6000 mAh, kapasitas penuh terakhir 3424 mAh = 57%

Pertanyaannya adalah mengapa seseorang melakukan ini? Yah, saya punya laptop dengan layar LCD rusak yang sekarang saya gunakan sebagai kotak bittorrent saya.

iceburn
sumber
5

Ini berhasil bagi saya di ubuntu 14.04:

cat /sys/class/power_supply/BAT0/capacity
the_saint
sumber
4

Saya akan menyarankan acpitetapi setelah membaca itu tidak bekerja di 11,10, saya punya ide.

Silakan ketik ini di terminal Anda: ls /proc/acpi/battery/BAT0 atauBAT1

Jika Anda mendapatkan "file atau direktori tidak ditemukan" maka ini tidak akan berhasil.

Tapi, jika daftar file, maka inilah skrip [rekatkan ke / usr / games / atau direktori lain di $ PATH, dan jalankan sudo chmod +x /usr/games/batterypercent, atau apa pun nama Anda] yang baru saja saya tulis untuk Anda yang akan memberi Anda perkiraan persentase baterai [Lihat di bawah]:

(Catatan, jika belum diinstal, instal program calcdari 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)%

Saya telah menguji skrip ini di laptop saya. Saya mengatakan perkiraan di atas karena acpimenunjukkan baterai 93%, dan skrip saya menunjukkan baterai 90%, jadi coba skrip ini terhadap persentase baterai GUI Anda, dan lihat bagaimana mematikannya. Dalam kasus saya, tampaknya secara konsisten 3% lebih rendah dari persentase acpi. Dalam hal ini, Anda dapat menambahkan baris ini tepat sebelum baris terakhir:, di percent=$((percent + 3))mana "3" adalah persentase yang rendah.

** Di lenovo saya, baterai terdaftar sebagai BAT1, coba itu juga. (12,04 LTS)

Mat
sumber
Matt, mencoba saran Anda, mendapat "Tidak ada file atau direktori"
Joe
Argh .. oke, saya hampir yakin ini sebabnya acpi tidak bekerja, karena saya kira 11.10 tidak mendukung fungsi ACPI laptop Anda juga [baterai, dll]. Saya pikir saya pernah mengalami hal seperti ini ketika melakukan upgrade di masa lalu. Saya masih di 11,04 sekalipun. Maaf ini tidak berhasil untuk Anda :(
Matt
Jadi, hanya ingin tahu, dapatkah Anda menempelkan hasilnya ls /proc/acpi/? Terima kasih
Matt
1

Skrip serupa tanpa calc atau 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"
xerostomus
sumber
1

Inilah yang saya gunakan. Ini hanya melihat perbedaan antara muatan penuh dan muatan saat ini serta melihat apakah muatannya turun dalam kasus yang digunakan untuk memberi tahu pengguna.

#!/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
Mark Simmons
sumber
1

Kita dapat mengulangi hanya persentase dengan perintah itu

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

65%

jika Anda perlu mengekstrak nilai itu

intika
sumber
0

Ini tidak akan membantu semua orang, tapi itu bisa saya - saya menggunakan byobu setiap kali saya menggunakan terminal, dan baterai adalah salah satu opsi untuk bilah pemberitahuan status.

sheepeatingtaz
sumber
0

Anda dapat mengetik:

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

atau

$ 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
SebMa
sumber
-4
cat /proc/acpi/ac_adapter/AC/state
Todd Harris
sumber
3
tidak yakin apa yang Anda bicarakan di sini. menjalankannya di terminal membericat: /proc/acpi/ac_adapter/AC0/state: No such file or directory
infoquad