노트북 배터리의 충전 및 방전주기를 제어하는 ​​스크립트

노트북의 리튬 배터리를 양호한 상태로 유지하려면 40 % 방전시 전류에 연결하고 80 % 충전시 분리해야한다고 아는 사람들이 있습니다.

많은 제조업체가 BIOS에 배터리가 특정 비율에 도달 할 때 배터리로 흐르는 전류를 "비활성화"하는 옵션을 포함하고 있으며 장비는 그 순간부터 전류 만 사용하지만 제 경우에는 Lenovo IdeaPad U510은 그렇지 않습니다. 그 옵션이 있습니다.

소프트웨어 수준에서이 작업을 수행하거나 배터리가 특정 %에 도달 할 때만 알려주는 Linux의 응용 프로그램을 모르기 때문에 연결 및 연결 해제가 필요할 때 알려주는 작은 스크립트를 만들기로 결정했습니다. 힘.

랩톱 배터리의 충전 및 방전주기를 제어하기위한 스크립트 요구 사항

가장 먼저 필요한 것은 패키지를 설치하는 것입니다. ACPI 우리 컴퓨터에서. 제 경우에는 ArchLinux를 사용할 때 다음을 실행하면됩니다.

$ sudo pacman -S acpi

ACPI가 필요한 이유는 무엇입니까? 글쎄, 우리 배터리의 상태를 알기 위해. 실행하면 다음과 같은 결과가 반환됩니다.

leni :: ~»acpi 배터리 0 : 방전, 76 %, 02:20:07 남음

다음은 알림을 실행할 파일을 만드는 것입니다. 제 경우에는 폴더 안에 넣습니다. ~ / .battery, 이름을 지정했습니다. bat_notification.sh. 내부에 다음을 넣었습니다.

#!/bin/bash # # -*- 인코딩: UTF-8 -*- # 이 프로그램은 자유 소프트웨어입니다. # 자유 소프트웨어 재단이 발행한 GNU General Public License(해당 라이센스의 버전 2 또는 # 귀하의 옵션에 따라) 이후 버전의 조건에 따라 재배포 및/또는 수정할 수 있습니다. # # 이 애플리케이션을 수정하는 경우 # 항상 원래 작성자를 언급해야 합니다. # # DesdeLinux.net CC-BY-SA 2015 # 저자: ELAVdesdelinux.net> # 배터리 상태를 알 수 있지만 백분율만 알 수 있습니다. BATTERY=`acpi | awk '{print $4}'` # 상태를 텍스트 파일에 전달합니다: echo $BATERIA > tmp_bateria.txt # 텍스트 파일에서 불필요한 정보를 제거합니다: RESULT=`cut -c 1-2 tmp_bateria.txt` if [ $ RESULT -ge 80 ]; then inform-send --urgency=creation --expire-time=5000 --app-name=Battery --icon=battery "배터리 알림" "전원을 분리해 주십시오" elif [ $RESULT -le 40 ]; then inform-send --urgency=creation --expire-time=5000 --app-name=Battery --icon=battery "Battery 알림" "전원을 연결해 주세요" else $BATTERY > /dev/null fi

스크립트가 랩톱 배터리의 충전 및 방전주기를 제어하는 ​​방법

작동 원리에 대한 설명은 내부에 있지만 간략하게 설명합니다.

먼저 AWK 나는 배터리에서 백분율 값만 추출합니다. 76 %를. 이 결과는 텍스트 파일로 전송되어 나중에 불필요한 문자를 제거하고 숫자 값만 남깁니다.

파일에 필요한 권한을 부여합니다.

$ chmod a+x ~/.bateria/bat_notificacion.sh

ArchLinux가 사용하는 방법 시스템D 그리고 오래된 것을 가지고 있지 않습니다 crontab을나는 크로 니를 설치한다. 이제 스크립트가 배터리 상태를 항상 확인하도록 crontab을 편집합니다.

$ crontab -e

그리고 내부를 추가합니다.

# 배터리 확인 * * * * * cd /home/elav/.battery/ && ./bat_notification.sh

그리고 배터리 비율이 40 % 이하이거나 80 % 이상이면 다음과 같은 알림이 표시됩니다.

배터리 알림

그리고 이것은 .. 당신이 만들고 싶은 모든 기여, 코드 제안 및 기타, 당신은 내 저장소를 통해 할 수 있습니다 비트 버켓.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   더피

    매우 좋습니다. 사용해보고 싶지만 데스크톱 컴퓨터 이상을 사용합니다. /
    질문, 임시 파일은 어디에 저장됩니까?. 예를 들어 집에서 볼 필요가 없도록 요점을 제시 할 수 있습니까? 😛

    1.    엘라 브

      글쎄, 내 경우에는 집의 숨겨진 폴더에서 스크립트를 실행했기 때문에 그 문제가 없습니다. 임시 파일은 스크립트와 함께 호스팅됩니다. .. 😀

  2.   남3리스

    대본은 좋지만 랩톱의 배터리 문제에 대해 읽었으며 100 % 충전했을 때 배터리 분리 또는 배터리가 아닌 문제가 여전히 명확하지 않습니다.
    와, Lenovo에서 2 년 넘게 근무했는데 문제가 없습니다 (나무에 두드리는 소리) : v
    어쨌든 누군가 드럼 문제가 사실인지 신화인지 설명하면 좋을 것입니다.
    안녕하십니까!

    1.    블랙 넷

      저는 Dell Inspiron 노트북을 가지고 있습니다. 현재 XNUMX 년 동안은 항상 연결하려고 노력하고 있으며 배터리는 연결하지 않아도 여전히 약 XNUMX 시간 지속됩니다 (물론 작업에 따라 다름). 훌륭한 조언이라고 생각합니다. 설치해 보겠습니다 ... 인사말

  3.   직원

    시스템을 사용했다면 (대문자도, 제가 실수 한 것도 아닙니다) 타이머를 사용할 수 있으며 타사 응용 프로그램을 설치할 필요가 없습니다.

    https://wiki.archlinux.org/index.php/Systemd/Timers#As_a_cron_replacement

    배터리와 관련하여 리튬 배터리 자체 회로가 한계에 도달하면 SO, 그렇지 않으면 안전한 폭발에 의존하지 않고 부하를 차단한다는 것을 이해합니다.
    그리고 배터리 수명을 보호하기 위해 항상 용량의 40 % 만 사용하면 배터리가 손상된 것과 같습니다.
    충전기는 100 %에 도달하거나 얼마 전에 연결을 해제해야하지만 배터리 "스트레스"(충전 프로세스를 빠르고 지속적으로 99 %에서 100 % 사이에서 시작 및 종료)하는 것을 방지하기 위해서만 사용해야합니다.

    1.    엘라 브

      글쎄요, 정말 모르겠어요. 다양한 의견이 있고 누구의 말을 들어야할지 모르겠어요.

      1.   

        글쎄, 그것은 당신의 PC입니다, 당신이 선호하는 것을 사용하지만 그것을하는 다른 방법을 아는 것이 항상 좋습니다 🙂

      2.   

        글쎄, 그것은 당신의 PC입니다, 당신이 선호하는 것을 사용하십시오. y blah blah blah 대신 x를 사용하는 것이 더 낫다고 말하는 사람들이 항상있을 것입니다.

        그리고 리눅스에는 동일한 xD를 수행하는 여러 가지 방법이 있습니다.

        대안의 목적
        로드를 알기위한 커널 2.6의 대체 acpi는 다음과 같습니다.
        cat / sys / class / power_supply / BAT1 / 용량

  4.  

    모든 예약 된 작업을 단일 파일로 통합하려는 사람들이 있습니다. 이들 각각에 대한 파일을 만드는 대신.

    xD 나에게 약간 과한 것 같습니다

    1.    엘라 브

      시스템 크론 a를 의미하거나 나에게 과도하게 보이지 않는다면 막대기에 똥처럼 보입니다. 당신의 삶을 복잡하게 만드는 방법.

  5.   Koprotk
  6.   테카 토니

    아이디어는 매우 훌륭합니다.

    주석에서 비가 지나간 배터리 충전량에 대한 데이터로 스크립트를 조정하여 acpi에 대한 종속성을 제거해야합니다.
    내가 이상하게 생각하는 것은 설정된 한계가 지나면 반복되는 알림이 도착하기 시작한다는 것입니다. 그렇다면 추가 컨트롤을 추가해야합니다. 예 :

    #! / bin / sh의
    BATLVL = $ (cat / sys / class / power_supply / BAT0 / 용량)
    if [$ BATLVL -ge 80]; 그때
    만약 [! -a / tmp / batwarn]; 그때
    notify-send –urgency = 위험 –expire-time = 5000 –app-name = 배터리 –icon = 배터리 "배터리 알림" "전류를 분리하십시오";
    터치 / tmp / batwarn;
    fi
    elif [$ BATLVL -le 40]; 그때
    만약 [! -a / tmp / batwarn]; 그때
    notify-send –urgency = critical –expire-time = 5000 –app-name = Battery –icon = battery "배터리 알림" "전원을 켜십시오"
    터치 / tmp / batwarn;
    fi
    그렇지 않으면
    if [-a / tmp / batwarn]; 그때
    rm -f / tmp / batwarn;
    fi
    fi

    (위의 내용은 테스트되지 않았지만 정상적으로 작동한다고 생각합니다)

    건배!"

    1.    엘라 브

      기여 해주셔서 감사합니다. 지금 바로 시도해보고 말씀 드리겠습니다.

  7.   에듀

    노트북의 온도를 조절하고 부드럽게하는 방법을 아는 사람이 있습니까? 유튜브에서 동영상을 볼 때 온도가 섭씨 40도 이상으로 상승하고 기계에서 훨씬 더 많은 리소스를 소비한다는 것입니다.

    1.    응원

      예를 들어 진공 청소기로 팬을 청소하면 도움이 될 수 있습니다. 그것을 청소하기 위해 분해하고 그것은 당신의 기술과 당신이하는 일에 대한 확신에 달려 있습니다.

      팬베이스도 좋지만 더 많은 공기가 이동하므로 팬을 가능한 한 크게 유지하십시오.
      몇 년 전, dell xps를 사용하면베이스 없이는 작업이 불가능했습니다. 더 뜨거워지면서 점점 더 뜨거워졌습니다. 팬이있는베이스를 사용하여 매우 훌륭하게 작동했습니다.

      도움이 되셨기를 바랍니다.

  8.   곤잘로 마르티네즈

    아주 좋은 스크립트!

    제가 한 것은 100 개를 충전하고 꺼내서 직류로 사용했습니다. 배터리는 근처에 전류가 없을 때 사용했습니다.

    이제 Mac에서는 할 수 없습니다

  9.   루치아노 라 가사

    안녕하세요, 귀하의 아이디어는 매우 좋습니다. 동일한 아이디어를 염두에두고 있음을 말씀 드리며, 이제 귀하의 스크립트를보고 적절할 때만 경고하도록 수정 및 수정하기 시작했습니다. 결과를 전달합니다.

    상태 = acpi | awk '{print $ 3}'NUMBER = acpi | awk '{print $ 4}'| cut -c 1-2 echo $ STATUS $ NUMBER % if [ "$ STATUS"== "방전 중,"] 다음 [$ NUMBER -le 40]이면 알림-보내기-긴급 성 = 위험 --expire-time = 5000 --app-name = 배터리 --icon = battery "Battery Notification" "Please connect power"fi elif [ "$ STATUS"== "Charging,"] then notify -send- 긴급 = 위험 --expire-time = 80 --app-name = 배터리 --icon = 배터리 "배터리 알림" "전원을 끄십시오"fi fi
    1.    엘라 브

      좋아요, 일부 댓글 및 기타 제안에 따라 지금은 다음과 같습니다.

      #!/bin/bash # # -*- 인코딩: UTF-8 -*- # 이 프로그램은 자유 소프트웨어입니다. # 자유 소프트웨어 재단이 발행한 GNU General Public License(해당 라이센스의 버전 2 또는 # 귀하의 옵션에 따라) 이후 버전의 조건에 따라 재배포 및/또는 수정할 수 있습니다. # # 이 애플리케이션을 수정하는 경우 # 항상 원래 작성자를 언급해야 합니다. # # DesdeLinux.net CC-BY-SA 2015 # 저자: ELAV  
      
      BATLVL = $ (cat / sys / class / power_supply / BAT1 / capacity) if [$ BATLVL -ge 80]; 그렇다면 [! -a / tmp / batwarn]; then notify-send --urgency = critical --expire-time = 5000 --app-name = Battery --icon = battery "배터리 알림" "전원을 차단하십시오"; 터치 / tmp / batwarn; elif [$ BATLVL -le 40]; 그렇다면 [! -a / tmp / batwarn]; then notify-send --urgency = critical --expire-time = 5000 --app-name = Battery --icon = battery "Battery Notification" "Please connect power"touch / tmp / batwarn; fi else if [-a / tmp / batwarn]; 그런 다음 rm -f / tmp / batwarn; fi fi fi
      1.    xxxtonixxx

        내가 이해하지 못하는 것은 어떤 값도 저장하지 않는 빈 파일을 생성해야한다는 것입니다. 당신이 검사하는 것은 스크립트가 실행될 때 검사해야하고 나중에 검사하거나 값을 비교할 필요가 없기 때문에 아무것도 저장할 필요가 없다는 것입니다. 또는 IT 스타일을 위해 무엇이든. 파일을 만드는 것이 최선의 선택이 아니라고 생각합니다. 한 번 이상 실행되지 않도록 체크 포인트 등으로 만들고 있습니까?

    2.    루치아노 라 가사

      안녕하세요, 발생한 소스에 약간의 오류가 있었고 더 깨끗해졌습니다. 아주 잘 작동하는 것 같습니다.

      상태 = acpi | awk '{print $ 3}'NUMBER = acpi | awk '{print $ 4}'| cut -c 1-2 if expr match "$ STATUS" "Discharging"then echo "다운로드 $ NUMBER %"if [$ NUMBER -le 40] then echo "Please connect the power"notify-send --urgency = critical- expire-time = 5000 --app-name = 배터리 --icon = battery "배터리 알림" "전류를 연결하십시오"fi elif expr match "$ STATUS" "충전 중"then echo "로드 중 $ NUMBER %"if [$ NUMBER -ge 80] then echo "전원을 끄십시오."notify-send --urgency = critical --expire-time = 5000 --app-name = Battery --icon = battery "Battery Notification" "전기를 분리하십시오. "fi fi
  10.   jony127

    안녕하세요, 당신이 말하는 것은 무엇보다 도시 전설에 가깝습니다. 저는 최근에 노트북을 구입하고이 주제에 대한 정보를 찾기 시작했습니다. 결론 : 항상 배터리를 100 %로 충전하고 다시 충전하기 전에 가능한 한 많이 방전하십시오.

    배터리에는 x 개의 유효 수명 충전주기가 있으므로 더 많이 충전할수록 사용 수명이 줄어 듭니다.

    나는 후지쯔와 모토로라 기술 서비스에 연락했고 그들은 내가 위에서 말한 것을 나에게 말했다. 제조업체는 배터리를 최대 80 %까지만 충전하거나 x % 미만으로 방전하지 않도록 권장하지 않습니다. 이것이 잘못 되었기 때문입니다. 반복합니다. 충전 및 충전 상태에서 배터리의 전체 용량을 활용하는 것이 가장 좋습니다. 방출.

    또한 제안한 제한을 사용하면 배터리를 자주 충전해야하는데 그다지 의미가 없습니다.

    위에서 설명한대로 배터리가 사용되므로 해당 스크립트를 제거하십시오.

    안부

  11.   아르만도 레저

    매우 흥미로운 주제는 알림이 매우 유용 해 보이며 모든 배포판에서 구현할 수있는 기능입니다.
    Linux MInt에서 구현 한 사람이 있습니까? 그것이 어떻게 작동하는지 보는 것은 흥미로울 것입니다.

    1.    Slimbook 팀

      좋은,
      Linux Mint의 경우 Ubuntu를 사용할 수 있습니다. 여기에 있습니다.
      https://slimbook.es/tutoriales/linux/45-script-linux-para-avisar-de-batearia-cargada
      안부,
      Slimbook 팀

  12.   토뇨

    정말 좋은 블로그입니다. 방금 발견했습니다. 저는 약 15 일 동안 Ubuntu를 테스트 해 왔으며 모든 것이 매우 흥미롭고 빠르며 ... 음,이 세상이 정말 마음에 듭니다. 나에게 최고라고 생각합니다.

  13.   프레데릭리눅스

    음 추신 몇 달 전에 JBattery를 만들었습니다. 그래픽으로 동일한 작업을 수행 할 수있는 Java 앱이며 최신 버전에서는 배터리 상태도 알 수 있습니다. 그들은 프로젝트를 알 수 있습니다

    http://niconsystem.zz.mu/proyectos/jbattery

    1.    엘라 브

      흥미있는

  14.   데이비드

    나는 당신의 대본으로 몇 가지를 배웠습니다. 배터리에 대해 이미 몇 가지 흥미로운 점에 대해 언급했지만 배터리에 대해 중요하다고 생각하는 몇 가지 측면을 적어 보겠습니다. 나는 무선 제어를 좋아합니다. 우리가 사용하는 Lipo 배터리는 더 섬세하지만 랩톱에 사용되는 리튬의 배터리와 매우 유사합니다. 우리 환경에서는 배터리에 훨씬 더 조심해야합니다. 다소 위험합니다 (LiPo). 그리고 그들은 우리에게 눈의 얼굴을 깎아 내리기 때문에 우리는 그들을 좋은 상태로 유지하는 데 관심이 있습니다.

    1.- 과부하 또는 과부하가 걸리지 않아야합니다. 이것은 랩톱의 회로에 의해 잘 제어됩니다. 그렇지 않으면 안전하지 않으며 제조업체는 하나 이상의 공포와 회상을 갖게됩니다. 그렇기 때문에 리튬 배터리가있는 모든 장치는 배터리가 부족할 때만 꺼집니다 (예 : 휴대폰). 부하가 100 %에 도달하면 최소 유지 보수 전류를 유지합니다. (모빌이 100 %에 도달하면 열이 줄어 듭니다.) 현대 노트북에서는 배터리가 꽂혀있을 때 배터리 대신 전원 입력에서 전류를 사용하는 것이 바람직하기 때문에 100 %라도 꽂아 두는 것이 문제가되지 않습니다. 물론 배터리 상태를 양호하게 유지하려면 최소값에 도달하여 배터리가 꺼지지 않도록하는 것이 좋지만 40 %는 과도합니다. 10 ~ 15 %면 충분하다고 생각합니다.

    2.- 열은 이러한 배터리의 성능을 많이 저하 시키므로 배터리를 충전하고 서늘한 곳에서 사용하는 것이 바람직합니다. 방전은 말할 것도없고 더운 곳보다 서늘한 곳에서 충전하는 데 시간이 덜 걸립니다. 문제는 랩톱이 상당히 뜨거워지고 온도를 낮추면 몇 분 더 지속된다는 것입니다.

    3. 배터리 충전 횟수를 줄일수록 좋습니다. 고품질 배터리의 유효 수명은 약 1000 회 충전주기 이상입니다. 잘 처리하면 오래 지속되고, 거칠게 처리하면 수명이 더 빨리 단축됩니다. 몇 년이 지나면 휴대폰이나 노트북의 배터리 수명이 점점 줄어드는 것을 확인하십시오. 20 %에서 100 %까지 충전하면 40 ~ 80 %보다 훨씬 오래 지속됩니다.

    4.- 최신 랩톱의 내부 회로를 사용하면 대부분 전원 콘센트에 연결되어 있거나 랩톱 모드에있는 경우 배터리 사용 프로필을 구성 할 수 있습니다. 현재에 연결하려는 경우 해당 방법을 구성하십시오 (불행히도이 작업을 수행하는 제조업체의 소프트웨어는 Windows 용으로 만 제공되지만 BIOS에서 설정 될 수 있음). 사실 플러그 모드에서 수행하는 작업은 연결을 끊는 것입니다. 배터리를 사용하지 않을 때 가장 잘 유지되고 보존되는 방법이기 때문입니다. 배터리가 80 % 미만으로 떨어지면 충전이 시작됩니다. 이것이 제가 선호하는 구성입니다. 언제든지 플러그를 뽑은 상태에서 사용해야하는 경우 배터리의 초기 양이 40 %가 될 것임을 명심해야합니다. 휴대용 모드로 설정하면 최대 80 %까지 충전되지만 올바르게 기억하면 최소값 (아마도 100 ~ 40 %) 이하로 떨어질 때까지 다시 충전을 시작하지 않으므로 완벽하게 작업 할 수 있습니다. 일반적으로 많이 움직이면이 모드로 연결됩니다.

    5.- 현재 기술은 일반적으로 리튬이므로 메모리 효과가 발생하지 않습니다. 수년 전 바이오스에서 배터리를 청소하거나 복구하기 위해 여러 번의 충전 / 방전주기를 수행했던 옵션은 더 이상 의미가 없습니다. 니켈 카드뮴과 니켈 메탈 하이드 라이드에서는 더 합리적이지만 리튬 (리튬, 라이프, 리포)에서는 그렇지 않습니다.

    6.- 1 번과 3 번에서 설명한 내용을 고려하면 배터리가 조금씩 방전되므로 장시간 방전 된 상태로 두지 마십시오. 이 스크립트는 배터리가있는 노트북을 "노트북 모드"에두고 오랫동안 사용하지 않을 경우 경고하는 좋은 방법이므로 배터리를 약 80-85 % 정도 유지하는 것이 이상적입니다. 충전, 시간이 지남에 따라 부하를 유지하는 가장 좋은 방법이며 실제로는 당일 구입했을 때 도착해야하는 방법입니다.

    참고로 배터리의 마지막 5 % (95-100 %)는 충전하는 데 훨씬 더 많은 비용이 들기 때문에 여러 번 사용하기 위해 서두르면 100이 될 때까지 기다릴 가치가 없습니다. 5 %에 대한 %.

    안부,
    데이빗.

    1.    엘라 브

      훌륭한 설명 .. 대단히 감사합니다

  15.   페이 비언 협회 회원

    좋은 오후 나는 다른 알림과 같은 소리를 재생하는 재정적 인 힌트를 증가시켜 스크립트를 편집하려고하지만 재생되지 않습니다. 내가 뭘 잘못하고 있는지 알려 주면 도움이 될 수 있습니다.

    통지 보내기 -h 문자열 : 사운드 파일 : /usr/share/sounds/KDE-Sys-Error-Printing.ogg«test»«이것은 소리 알림 테스트입니다»

  16.   샌디에고

    좋은…
    컷 이상

    결과 =cut -c 1-2 tmp_bateria.txt

    tr을해야하지 않습니까?

    결과 =tr "%," " " < tmp_bateria.txt

    그러나 컷으로 배터리가 100이면 10 (-c 1-2) 동안 걸리고 연결하라는 메시지가 표시됩니다.
    아 .. 나 스스로 대답 해. 이 스크립트를 실행하면 절대 100에 도달해서는 안됩니다 🙂 어댑터가 연결된 현재 제 경우는 다음과 같습니다. p
    그라시아.

  17.   마리오

    안녕. 훌륭한 스크립트, 나는 비슷한 일을 할 생각이지만, 예를 들어 배터리가 100 %에 도달하면 충전을 중지하고 소스에서 직접 에너지를 가져 오는 등을 처리하는 전자 충전 컨트롤러를 대신 사용합니다. 예를 들어, 최대 80℅까지 충전하도록 선택하고 그 수준에 도달하면 컨트롤러가 배터리로의 에너지 전송을 중지하고 연결 및 분리 할 필요없이 소스에서 전류 만 가져옵니다. , 불필요하게 순환하고 동시에 배터리가 항상 조기 성능 저하를 피하는 범위에서 작동합니다.

  18.   호세 알베르토 차베스 알바레즈

    죄송합니다. 스크립트가 릴레이를 활성화하여 랩톱의 부하를 비활성화하고 부하 수준이 낮을 때 활성화 할 수 있다고 생각하십니까?