バッテリーが2つ付いたノートパソコンがあります。両方のバッテリーの包括的な詳細を知りたいです。特に、両方のバッテリーが放電されるまでの残り時間と、両方のバッテリーに残っている充電量の割合を知りたいです。これを行うコマンドはありますか?
私が実行したとき:
acpi -b
次の結果が表示されます。
Battery 0: Full, 100%
Battery 1: Discharging, 80%, 05:10:03 remaining
だから私は次のコマンドが欲しいです。
All batteries: Discharging 90%, 10:10:06 remaining
ベストアンサー1
これは私のスクリプトです。それはacpi
次にかかっています。acpitool
それ:
デバイスのすべてのバッテリーの平均パーセントを出力します。
すべてのバッテリーが完全に充電されるまでにどのくらい時間がかかります(デバイスが接続されている場合)、またはバッテリーが完全に放電されるのにかかる時間(接続されていない場合)
デバイスが充電中かどうかを示します。
最終出力形式はAll batteries: Discharging 90%, 10:10:06 remaining
(他の数字、放電充電可能)です。
#!/bin/bash
get_time_until_charged() {
# parses acpitool's battery info for the remaining charge of all batteries and sums them up
sum_remaining_charge=$(acpitool -B | grep -E 'Remaining capacity' | awk '{print $4}' | grep -Eo "[0-9]+" | paste -sd+ | bc);
# finds the rate at which the batteries being drained at
present_rate=$(acpitool -B | grep -E 'Present rate' | awk '{print $4}' | grep -Eo "[0-9]+" | paste -sd+ | bc);
# divides current charge by the rate at which it's falling, then converts it into seconds for `date`
seconds=$(bc <<< "scale = 10; ($sum_remaining_charge / $present_rate) * 3600");
# prettifies the seconds into h:mm:ss format
pretty_time=$(date -u -d @${seconds} +%T);
echo $pretty_time;
}
get_battery_combined_percent() {
# get charge of all batteries, combine them
total_charge=$(expr $(acpi -b | awk '{print $4}' | grep -Eo "[0-9]+" | paste -sd+ | bc));
# get amount of batteries in the device
battery_number=$(acpi -b | wc -l);
percent=$(expr $total_charge / $battery_number);
echo $percent;
}
get_battery_charging_status() {
if $(acpi -b | grep --quiet Discharging)
then
echo "Discharging";
else # acpi can give Unknown or Charging if charging, https://unix.stackexchange.com/questions/203741/lenovo-t440s-battery-status-unknown-but-charging
echo "Charging";
fi
}
echo "All batteries: $(get_battery_charging_status) $(get_battery_combined_percent)%, $(get_time_until_charged ) remaining";