1. 序章

使用しているLinuxディストリビューションのデスクトップ環境に応じて、デスクトップにバッテリーステータスインジケーターがある場合とない場合があります。 場合によっては、コマンドラインを使用してバッテリーの状態を確認する必要があります。

このチュートリアルでは、コマンドを使用してバッテリーの状態(充電状態と電力の割合)を確認するいくつかの方法を見ていきます。

2. upowerを使用する

upowerは、UPowerデーモンのコマンドラインクライアントであり、ほとんどのLinuxディストリビューションでシステム全体の電源管理を担当します。 このコマンドを使用してバッテリーに関する情報を取得する前に、接続されているバッテリーのパスを把握する必要があります。 これは、 upower-eまたはupower–enumerateを使用して実行できます。

$ upower -e
/org/freedesktop/UPower/devices/line_power_AC
/org/freedesktop/UPower/devices/battery_BAT0
/org/freedesktop/UPower/devices/DisplayDevice

デバイス名が「battery..」で始まる2行目は、私たちが探しているものです。 使用しているディストリビューションに応じて、通常はbattery_BAT0またはbattery_BAT1です。

このパスを取得したら、 upower-iを使用してバッテリーに関する詳細情報を取得できます。

$ upower -i /org/freedesktop/UPower/devices/battery_BAT0
  native-path:          BAT0
  vendor:               LGC-LGC3.0
  model:                DELL 49VTP27
  serial:               14057
  power supply:         yes
  updated:              Monday 18 April 2022 07:45:28 AM (105 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               charging
    warning-level:       none
    energy:              53.5464 Wh
    energy-empty:        0 Wh
    energy-full:         57.3981 Wh
    energy-full-design:  48.84 Wh
    energy-rate:         2.4531 W
    voltage:             12.564 V
    time to full:        1.6 hours
    percentage:          93%
    capacity:            100%
    technology:          lithium-ion
    icon-name:          'battery-full-charging-symbolic'
  History (rate):
    1650248128	2.453	charging

言うまでもなく、 grep またはその他のコマンドを使用して、出力を必要な形式に処理できます。

$ upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep percentage | grep -o "[0-9]*"
93
$ upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep state | cut -d ':' -f2 | xargs
charging

最近では、ほとんどのデバイスにバッテリーが1つしかないため、-dパラメーターを指定してupowerコマンドを使用することもできます。これにより、接続されているすべてのデバイスの情報が基本的に出力されます。

$ upower -d
Device: /org/freedesktop/UPower/devices/line_power_AC
  native-path:          AC
  power supply:         yes
  updated:              Thursday 21 April 2022 07:42:11 AM (658 seconds ago)
  has history:          no
  has statistics:       no
  line-power
    warning-level:       none
    online:              yes
    icon-name:          'ac-adapter-symbolic'

Device: /org/freedesktop/UPower/devices/battery_BAT0
  native-path:          BAT0
  vendor:               LGC-LGC3.0
  model:                DELL 49VTP27
  serial:               14057
  power supply:         yes
  updated:              Thursday 21 April 2022 07:52:12 AM (57 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               charging
    warning-level:       none
    energy:              48.507 Wh
    energy-empty:        0 Wh
    energy-full:         57.3981 Wh
    energy-full-design:  48.84 Wh
    energy-rate:         7.1262 W
    voltage:             12.544 V
    time to full:        1.2 hours
    percentage:          93%
    capacity:            100%
    technology:          lithium-ion
    icon-name:          'battery-full-charging-symbolic'
  History (rate):
    1650507732	7.126	charging

....more info

このコマンドは、デバイスごとに upower -e を実行し、続いて upower -i を実行するのと同じであるため、プロセスの1ステップを節約できます。

3. / sys / class /power_supplyディレクトリの使用

Linuxカーネルは、システムおよび接続されているハードウェアデバイスに関するさまざまな情報を、sysfsと呼ばれる読み取り専用ファイルシステムで公開します。 / sysディレクトリを使用してこのファイルシステムにアクセスできます。 ls コマンドを使用して、/ sys / class / power_supplyディレクトリの下にバッテリーデバイスディレクトリを見つけることができます:

$ ls /sys/class/power_supply/
AC  BAT0

BAT0は私たちが探しているディレクトリです。 使用しているLinuxディストリビューションに応じて、通常はBAT0またはBAT1です。 次に、ディレクトリ内のファイルからバッテリーに関するさまざまな情報を取得できます。 ファイルの一覧表示から始めて、どのファイルが存在するかを確認できます。

ls /sys/class/power_supply/BAT0
alarm           charge_full_design  device        power          subsystem   voltage_min_design
capacity        charge_now          hwmon2        present        technology  voltage_now
capacity_level  current_now         manufacturer  serial_number  type
charge_full     cycle_count         model_name    status         uevent

これで、対応するファイルの内容を読み取って、必要なデータを取得できます。

$ cat /sys/class/power_supply/BAT0/capacity
100
$ cat /sys/class/power_supply/BAT0/status
Full

上記のスニペットでは、 capacity はバッテリーの充電率を示し、statusはバッテリーが充電中か放電中かを示します。

4. 結論

この記事では、コマンドラインを使用してバッテリーの状態に関する情報を取得するための2つの異なる方法について説明しました。

upowerコマンドを使用すると、1つまたは2つのコマンドを使用して、バッテリーの状態に関する詳細な出力を出力できます。

/ sys / class / power_supply / BAT0 /(またはBAT1)ディレクトリ内のファイルを使用して情報にアクセスすることもできます。ここでの情報は非常に生で離散的であり、フォーマットはありません。 したがって、必要に応じて、bashスクリプトでデータを直接使用できます。