Comment vérifier l'état de la batterie via le terminal?

320

Je voudrais une commande qui affiche l'état de la batterie dans le terminal.

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

Réponses:

335

La commande ci-dessous génère un état du lot et des informations statistiques sur la batterie. Le /org/...chemin peut être trouvé avec la commande upower -e( --enumerate).

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

Exemple de sortie:

  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

Vous pouvez utiliser des outils tels que grep pour obtenir uniquement les informations souhaitées à partir de toutes ces sorties.

Un moyen simple: en lançant la commande ci-dessus dans

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

les sorties:

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

Si vous souhaitez souvent exécuter cette commande, vous pouvez créer un alias Bash pour l'ensemble de la commande. Exemple:

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

Ajoutez cela à la fin de votre fichier .bashrc, et vous pouvez taper 'bat' à tout moment, dans le terminal.

Il existe également une commande upower -d( --dump) qui affiche des informations sur toutes les sources d'alimentation disponibles, telles que les batteries d'ordinateurs portables, les souris externes, etc.

Lekensteyn
la source
9
upower --enumeratepeut être utile si vous ne savez pas comment l'utiliser upower.
Landroni
5
@landroni Et l'option abrégée est upower -e, cette commande répertorie les chemins disponibles pour upower -i .... Si vous êtes paresseux et que vous voulez juste une liste de tous les périphériques, utilisez upower -d( upower --dump).
Lekensteyn
1
En effet. Je pense que ce serait un ajout utile à la réponse elle-même, car lorsque j'ai essayé d'utiliser pour la première fois, upowerje me suis immédiatement perdu.
landroni
1
@landroni Bon point, j'ai mis à jour la réponse. N'hésitez pas à le modifier si vous avez d'autres ajouts connexes.
Lekensteyn
8
Une autre ligne pourrait êtreupower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\ full|to\ empty|percentage"
Wilf
124

Rappel amical : depuis le noyau Linux 2.6.24, l’ utilisation /procde stocker les informations ACPI est découragée et obsolète .

Nous sommes maintenant encouragés à utiliser -> /sys/class/power_supply/BAT0.

UPDATE: Linux 3.19 et les versions ultérieures, nous devrions examiner le répertoire suivant -> /sys/class/power_supply/BAT1/

Par exemple, vérification de la capacité et du statut sur Arch Linux sous 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
la source
1
Plus précisément, /sys/class/power_supply/BAT0/capacitysemble montrer le pourcentage de charge actuel.
thomasa88
Obsolète… ça marche encore?
neverMind9
3
+1, cela devrait être la réponse acceptée, car il ne repose pas sur un logiciel supplémentaire qui pourrait ne pas être installé et qui n'est pas nécessaire pour répondre à cette question. @ neverMind9: Je ne sais pas ce que vous voulez dire, /procc'est déconseillé, mais cela /sysfonctionne parfaitement pour moi, même dans le noyau 4.20.
Comfreak
1
@ Comfreak fonctionne pour moi aussi, en fait.
neverMind9
1
Non seulement cela devrait être la réponse acceptable, mais la récupération des données peut être obtenue en utilisant n'importe quel langage de programmation ayant une readfonction similaire à PHP, $capacity = trim(file_get_contents("/sys/class/power_supply/BAT0/capacity"));ce qui le rend très facile et ne dépend d'aucune dépendance externe.
Amin NAIRI
67

D'abord installer acpien exécutant cette commande,

sudo apt-get install acpi

Puis lancez:

acpi

Exemple de sortie:

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

Ou pour une sortie plus détaillée qui met à jour en permanence:

watch --interval=5 acpi -V

Sortie:

Toutes les 5.0s: acpi -V mer. 8 janv. 15:45:35 2014

Batterie 0: pleine, 100%
Adaptateur 0: en ligne
Thermique 0: ok, 44,0 degrés C
Thermique 0: le point de déclenchement 0 bascule en mode critique à une température de 127,0 degrés C
Thermique 0: le point de déclenchement 1 passe en mode chaud à une température de 127,0 degrés C
Cooling 0: intel_powerclamp aucune information d'état disponible
Refroidissement 1: pkg-temp-0 aucune information d'état disponible
Refroidissement 2: LCD 100 sur 100
Refroidissement 3: LCD 100 sur 100
Refroidissement 4: Processeur 0 sur 10
Refroidissement 5: Processeur 0 sur 10
Refroidissement 6: Processeur 0 sur 10
Refroidissement 7: Processeur 0 sur 10
Refroidissement 8: Processeur 0 sur 10
Refroidissement 9: Processeur 0 sur 10
Refroidissement 10: Processeur 0 sur 10
Refroidissement 11: Processeur 0 sur 10
Suhaib
la source
29

Grâce à @Wilf, cela fonctionne sous Ubuntu 17.10 sous Lenovo Yoga 720:

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

Sortie:

state:               fully-charged
percentage:          100%

Ou juste la valeur numérique avec cette doublure

upower -i $(upower -e | grep '/battery') | grep --color=never -E percentage|xargs|cut -d' ' -f2|sed s/%//
rubo77
la source
Sur Fedora 23, je devais faire une recherche pour batteryau lieu de BATle faire fonctionner. J'ai trouvé ça avec upower --enumerate.
erik
grep pour les batterytravaux dans Ubuntu aussi, donc je l'ai changé deBAT
rubo77
28

Il suffit de taper la commande

acpi

Pour des informations détaillées, vous pouvez taper

acpi -V

Je n'avais pas besoin d'installer de paquet avant.

Système: Debian 7.2 64bit

utilisateur309404
la source
19

Voici un article sur un package permettant de contrôler la durée de vie de votre batterie en ligne de commande.

En gros, tout ce que vous avez à faire est de:

sudo apt-get install acpi
acpi -V
josh-fuggle
la source
18

Peut-être que vous pouvez essayer:

cat /proc/acpi/battery/BAT0/state

cat /proc/acpi/battery/BAT0/info

Mariano L
la source
23
utiliser /procpour stocker les informations ACPI est découragé et obsolète depuis le 2.6.24. Maintenant c'est dans /sys/class/power_supply/BAT0.
Terry Wang
14

Je suis un peu en retard à la fête mais voici ma petite contribution. Sur la base des réponses précédentes, j'ai créé un script simple batpower:

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

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

La sortie pour exécuter ceci (./batpower) va ressembler à ceci:

POWER_SUPPLY_CAPACITY=23

NB: le numéro de batery peut être différent pour vous, dans mon cas, il s'agit de BAT1, mais vous pouvez toujours le trouver en vous connectant à / sys / class / power_supply ou comme Lekensteyn l'a mentionné via upower -e.

Ma machine: Ubuntu 13.10, 3.11.0

Remplacez BAT1 dans le code bash ci-dessus par BAT0 si vous possédez une version plus ancienne Ubuntu, c’est-à-dire 13.04 ou une version ultérieure.

SCRIPT AMÉLIORÉ: Depuis mon post original, j'ai apporté une petite amélioration au script:

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

Comme toujours, faites attention aux espaces avec bash. Ceci est tout à fait explicite. Si la batterie est présente, elle apparaîtra sinon, le script vous le dira. Maintenant, allez dans votre fichier .bashrc et ajoutez $ (batpower) à votre invite. Voici mon promt:

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

Mettez à jour votre terminal ou ouvrez un nouvel onglet ou une nouvelle fenêtre. Vous pouvez désormais surveiller en permanence la charge de la batterie dans le terminal! y compris tty! Que les scripts soient loués! entrez la description de l'image ici

Sergiy Kolodyazhnyy
la source
Vous devez vérifier /sys/class/power_supply/BAT0et /sys/class/power_supply/BAT1... Ce peut être soit. Et vous devriez utiliser ce chemin ( /sys/class/power_supply/BAT#).
dylnmc
Dans mon netbook Ubuntu 12.04 (après le passage à BAT0), je ne semble pas avoir de ligne POWER_SUPPLY_CAPACITY. Il semble cependant que je puisse le calculer à partir des valeurs POWER_SUPPLY_CHARGE_FULL et POWER_SUPPLY_CHARGE_NOW.
mwfearnley
En revanche, Batman (Battery Manager) a inconsciemment un son plus séduisant que Batpower :) Sur une note plus sérieuse, il est intéressant que vous écriviez dans AskUbuntu en 2014 et à quel point vous êtes différent aujourd'hui.
WinEunuuchs2Unix le
@ WinEunuuuchs2Unix Oui, j'ai un peu changé depuis que j'ai commencé, j'ai appris quelques nouveaux trucs. batman aurait un bel effet, mais il est probable que le droit d’auteur soit protégé;)
Sergiy Kolodyazhnyy
10

Vous pouvez le faire sans installer de paquet supplémentaire:

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

Cette commande est levée de la source de Byobu . Ce pourrait être un bon candidat pour un alias Bash .

ændrük
la source
+1 de moi! CLI FTW. Si vous avez 2 piles changer BAT0 pour BAT1 :)
Rinzwind
Est décourageant depuis le 2.6.24, nous devrions utiliser/sys/class/power_supply/BAT0/
Pablo A
9

Exécutez la commande suivante dans un terminal pour obtenir des informations détaillées:

cat /proc/acpi/battery/BAT0/info

Si vous voulez juste que l'Etat fasse:

cat /proc/acpi/battery/BAT0/state
MEM
la source
Cela a été découragé dans l'autre réponse identique.
Pablo A
6

Installez acpi, puis utilisez-le watchpour surveiller en continu via la ligne de commande.

Par exemple

watch --interval=5 acpi -V

montrera les informations telles que ci-dessous et sera mis à jour toutes les 5 secondes.

Batterie 0: pleine, 100%, information sur le débit non disponible
Batterie 0: capacité nominale 6000 mAh, dernière capacité totale 3424 mAh = 57%

La question est pourquoi quelqu'un ferait-il cela? Eh bien, j'ai un ordinateur portable avec un écran LCD cassé que j'utilise maintenant comme boîtier BitTorrent.

brûlures de glace
la source
5

Cela a fait le travail pour moi dans Ubuntu 14.04:

cat /sys/class/power_supply/BAT0/capacity
le Saint
la source
4

J'allais suggérer acpimais après avoir lu cela ne fonctionnait pas en 11h10, j'avais une idée.

Veuillez taper ceci dans votre terminal: ls /proc/acpi/battery/BAT0 ouBAT1

Si vous obtenez un "fichier ou répertoire introuvable", cela ne fonctionnera pas.

Mais, s'il répertorie des fichiers, voici un script [collez-le dans / usr / games / ou dans un autre répertoire de $ PATH et exécutez-le sudo chmod +x /usr/games/batterypercent, ou le nom de votre choix] que je viens d'écrire pour vous et qui vous donnera un pourcentage estimé de la batterie. [Voir ci-dessous]:

(Remarque, si pas déjà installé, installez le programme à calcpartir du 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)%

J'ai testé ce script sur mon ordinateur portable. Je dis estimation ci-dessus, car il acpiaffiche une batterie de 93%, et mon script indique une batterie de 90%. Essayez donc ce script avec le pourcentage de batterie de votre interface graphique et voyez à quel point il est en panne. Dans mon cas, il semble être systématiquement inférieur de 3% au pourcentage d'acpi. Dans ce cas, vous pouvez ajouter cette ligne juste avant la dernière ligne:, percent=$((percent + 3))où "3" est le pourcentage le plus bas.

** Dans mon lenovo, la batterie est répertoriée comme BAT1, essayez cela aussi. (12.04 LTS)

Mat
la source
Matt, a essayé votre suggestion, a obtenu un "Aucun fichier ou répertoire"
Joe
Argh .. d'accord, je suis presque certain que c'est pour cette raison queacpi cela ne fonctionne pas, car je suppose que 11.10 ne prend pas en charge également les fonctions ACPI de votre ordinateur portable [batterie, etc.]. Je pense avoir déjà vécu quelque chose comme cela lors de la mise à niveau par le passé. Je suis toujours sur 11.04 cependant. Désolé que cela n'ait pas fonctionné pour toi :(
Matt
Alors, juste curieux, pouvez-vous coller le résultat de ls /proc/acpi/? Merci
Matt
1

Script similaire sans calc ou 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"
xérostome
la source
1

Voici ce que j'utilise. Il se contente de regarder la différence entre la charge complète et la charge actuelle, ainsi que de voir si la charge baisse, auquel cas il utilise notify pour alerter l'utilisateur.

#!/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
la source
1

Nous pouvons faire écho au pourcentage avec cette commande

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

65%

au cas où vous auriez besoin d'extraire cette valeur

intika
la source
0

Cela n’aidera pas tout le monde, mais c’est ce qui m’a été utile - j’utilise byobu chaque fois que j’utilise un terminal, et la pile est l’une des options de la barre de notifications d’état.

moutons manger
la source
0

Vous pouvez soit taper:

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

ou

$ 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
la source
-4
cat /proc/acpi/ac_adapter/AC/state
Todd Harris
la source
3
Je ne sais pas de quoi vous parlez ici. l'exécuter dans le terminal a donnécat: /proc/acpi/ac_adapter/AC0/state: No such file or directory
infoquad