두 개의 배터리의 충전 및 남은 시간 세부 정보를 가져오는 명령

두 개의 배터리의 충전 및 남은 시간 세부 정보를 가져오는 명령

배터리가 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

그것:

  1. 장치에 있는 모든 배터리의 평균 백분율을 출력합니다.

  2. 모든 배터리가 완전히 충전되는 데 시간이 얼마나 걸리나요(장치가 연결된 경우) 또는 배터리가 완전히 방전되는 데 걸리는 시간(연결되지 않은 경우)

  3. 기기가 충전 중인지 여부를 나타냅니다.

최종 출력 형식은 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";

관련 정보