首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命令获取两个电池的充电和剩余时间的详细信息。

命令获取两个电池的充电和剩余时间的详细信息。
EN

Unix & Linux用户
提问于 2018-04-11 00:31:59
回答 1查看 3.3K关注 0票数 0

我有一台有两个电池的笔记本电脑。我想弄清楚这两个电池的详细情况。特别是,我希望在两个电池耗尽之前的剩余时间和两个电池的剩余电量。有命令可以这样做吗?

当我跑步时:

代码语言:javascript
复制
acpi -b

我得到以下输出:

代码语言:javascript
复制
Battery 0: Full, 100%
Battery 1: Discharging, 80%, 05:10:03 remaining

所以我想要一个命令来代替给我这样的命令:

代码语言:javascript
复制
All batteries: Discharging 90%, 10:10:06 remaining
EN

回答 1

Unix & Linux用户

发布于 2018-08-04 19:02:03

这是我的剧本。这取决于acpiacpitool

它:

  1. 输出设备中所有电池的平均百分比
  2. 所有电池需要多长时间才能完全充电(如果设备是插上电源的话),或者需要多长时间才能完全空置(如果没有插上电源),
  3. 上面写着设备是否被充电了。

最终输出采用All batteries: Discharging 90%, 10:10:06 remaining格式(不同的数字和放电可以充电)。

代码语言:javascript
复制
#!/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";
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/436886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档