控製筆記本電池充電和放電週期的腳本

那些知道的人說,為了使筆記本電腦的鋰電池保持良好狀態,必須在40%放電時將其連接到電流,而在80%充電時必須斷開連接。

許多製造商在BIOS中都提供了在電池達到一定百分比時“停用”電流的選項,並且該設備僅從那一刻開始使用電流,但是,在我的特定情況下, Lenovo IdeaPad U510沒有該選項。

我不知道Linux中有哪個應用程序在軟件級別執行此操作,或者僅在電池電量達到特定百分比時才通知我們,因此我決定創建一個小的腳本,在需要連接和斷開電源時通知我。

控製筆記本電池充電和放電週期的腳本要求

我們需要做的第一件事就是安裝軟件包 ACPI 在我們的計算機上。 在我使用ArchLinux的情況下,我只需要執行:

$ sudo pacman -S acpi

為什麼我們需要ACPI? 好吧,要知道我們電池的狀態。 如果執行它,它將返回如下​​內容:

leni :::»acpi電池0:放電中,剩餘76%,剩餘02:20:07

接下來是創建執行通知的文件,在我的情況下,我將其放在文件夾中 〜/。電池,我給它起了名字 bat_notification.sh。 在內部,我輸入了以下內容:

#!/bin/bash # # -*- ENCODING: UTF-8 -*- # 該程式是免費軟體。您可以根據自由軟體基金會發布的 GNU 通用公共授權的條款重新分發它和/或修改它, # 該授權的版本 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 [ $結果-ge 80];然後notify-send --urgency=ritic --expire-time=5000 --app-name=Battery --icon=battery "電池通知" "請斷開電源" elif [ $RESULT -le 40 ];然後notify-send --urgency=ritic --expire-time=5000 --app-name=Battery --icon=battery "電池通知" "請連接電源" else $BATTERY > /dev/null fi

腳本如何控製筆記本電池的充電和放電週期

有關其工作原理的解釋在內部,但我將對其進行簡要說明。

首先,使用 AWK 我只提取電池百分比的值,它返回類似 76%,。 此結果將傳輸到文本文件,以在以後消除不必要的字符,僅保留數字值。

我們為文件提供必要的權限:

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

ArchLinux如何使用 系統D 而且沒有舊的 crontab中我安裝cronie。 現在,我們編輯crontab,以便腳本始終檢查電池狀態。

$ crontab -e

我在裡面添加:

#電池檢查* * * * * cd /home/elav/.battery/ && ./bat_notification.sh

瞧,當電池百分比等於或小於40%或等於或大於80%時,我會收到這樣的通知:

電池通知

就是這樣..您想要做出的任何貢獻,代碼建議和其他事項,都可以通過我的資料庫在 到位桶.


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   德皮 他說:

    很好,我想嘗試一下,但我使用的不是台式機:/
    一個問題,臨時文件保存在哪裡? 例如,如果是在家中,您是否可以提出要點,以便不必看到它? 😛

    1.    拉夫 他說:

      好吧,就我而言,由於我是在家裡一個隱藏文件夾中運行腳本的,所以我沒有這個問題。 臨時文件與腳本一起託管。

  2.   NaM3less 他說:

    該腳本很好,但是我已經閱讀了有關筆記本電腦中電池的問題,但我仍然不清楚在100%充電後電池是否斷開連接的問題。
    好吧,我在聯想工作兩年多了,我沒有遇到任何問題(敲木頭):v
    無論如何,最好有人解釋一下鼓的問題是真的還是神話。
    的問候!

    1.    黑網 他說:

      我有一台戴爾Inspiron筆記本電腦,現在已經使用了四年,我嘗試始終保持連接狀態,並且電池仍然可以持續約一個小時不連接(當然,這取決於工作)。 我認為這是一個極好的建議,我將嘗試安裝它。

  3.   員工管理 他說:

    如果您使用systemd(沒有大寫字母,我也犯了一個錯誤),則可以使用計時器,而無需安裝第三方應用程序。

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

    關於電池,我了解到鋰電池自身的電路會在達到極限時斷開負載,而不取決於SO,否則會發生安全爆炸🙂
    就是說,如果要保護電池壽命,我只需要始終使用電池容量的40%,就和損壞電池一樣。
    當充電器達到100%或不久之前,應斷開充電器的連接,但這只是為了避免所謂的“給電池施加壓力”(快速,持續地在99%到100%之間開始和結束充電過程)。

    1.    拉夫 他說:

      好吧,我真的不知道,有很多不同的意見,我也不知道該聽誰的話。

      1.    他說:

        好吧,這是您的個人計算機,使用您喜歡的東西,但是了解不同的做事方法總是很好的🙂

      2.    他說:

        好吧,這是您的電腦,使用您喜歡的東西,總會有人說最好使用x東西而不是y等等。

        在Linux中,有很多方法可以完成相同的xD

        替代目的
        內核2.6的另一種acpi知道負載是:
        cat / sys / class / power_supply / BAT1 /容量

  4.   他說:

    有些人喜歡將所有計劃的任務統一在一個文件中。 而不是為每個文件創建文件。

    對我來說似乎有點過分xD

    1.    拉夫 他說:

      如果您的意思是systemd cron a,對我來說似乎並不過分,那簡直就是一團糟。 這是使您的生活複雜化的一種方式。

  5.   科普羅特克 他說:
  6.   ThecaTony 他說:

    這個想法很好,值得讚賞。

    有必要使腳本適應雨中註釋中傳遞的有關電池電量的數據,從而消除對acpi的依賴。
    我感到奇怪的是,一旦超過了既定的限制,重複的通知就會開始出現,對嗎? 如果是這樣,則應添加其他控件,例如:

    #/ bin / sh的
    BATLVL = $(cat / sys / class / power_supply / BAT0 /容量)
    如果[$ BATLVL -ge 80]; 然後
    如果[! -a / tmp / batwarn]; 然後
    notify-send –緊急程度=嚴重–expire-time = 5000 –app-name =電池–icon =電池“電池通知”“請斷開電流”;
    touch / tmp / batwarn;
    fi
    elif [$ BATLVL -le 40]; 然後
    如果[! -a / tmp / batwarn]; 然後
    通知發送–緊急程度=緊急–過期時間= 5000 –應用程序名稱=電池–圖標=電池“電池通知”“請打開電源”
    touch / tmp / batwarn;
    fi
    其他
    如果[-a / tmp / batwarn]; 然後
    rm -f / tmp / batwarn;
    fi
    fi

    (以上內容未經測試,儘管我認為它可以正常運行)

    乾杯!”

    1.    拉夫 他說:

      感謝您的貢獻,我現在嘗試一下,然後告訴您。

  7.   EDU 他說:

    有人知道如何控制和軟化筆記本電腦的溫度嗎?是因為溫度上升到40攝氏度以上,並且在YouTube上觀看視頻時會消耗機器上更多的資源。

    1.    PEP 他說:

      清潔風扇會有所幫助,例如使用真空吸塵器。 將其拆開進行清潔,這取決於您的技能,並且您確定自己會做什麼。

      風扇底座也不錯,但請保持風扇盡可能大,以使空氣流通更多。
      幾年前,在沒有Dell XPS的情況下,沒有基礎就無法工作。 隨著溫度的升高,它變得越來越慢。 有了一個帶風扇的底座,我就能很好地工作。

      希望對你有幫助。

  8.   貢薩洛·馬丁內斯(Gonzalo Martinez) 他說:

    很好的腳本!

    我所做的是讓100充電,我拿出它並用在直流電中。 當附近沒有電流時,電池會使用它。

    現在有了Mac,我🙁

  9.   盧西亞諾·拉加薩(Luciano Lagassa) 他說:

    您好,您的想法非常好,我告訴您我有相同的想法,現在我開始查看您的腳本並對其進行修改和修改,以使其僅在相應時提醒您。 我把結果傳給你。

    狀態= acpi | awk'{print $ 3}'NUMBER = acpi | awk'{print $ 4}'| 剪切-c 1-2 echo $ STATUS $ NUMBER%如果[“ $ STATUS” ==“正在放電”],則如果[$ NUMBER -le 40]則通知發送--urgency =緊急--expire-time = 5000 --app-name =電池--icon =電池“電池通知”“請連接電源”文件[[$ STATUS] ==“正在充電”],然後如果[$ NUMBER -ge 80]則通知-send --urgency =緊急--expire-time = 5000 --app-name =電池--icon =電池“電池通知”“請關閉電源” fi
    1.    拉夫 他說:

      太好了,儘管有一些評論和其他建議,但現在我是這樣的:

      #!/bin/bash # # -*- ENCODING: UTF-8 -*- # 該程式是免費軟體。您可以根據自由軟體基金會發布的 GNU 通用公共授權的條款重新分發它和/或修改它, # 該授權的版本 2 或(由您選擇)任何更高版本。 # # 如果您對此應用程式進行任何修改,# 您必須始終註明其原作者。 ## DesdeLinux.net CC-BY-SA 2015 # 作者:ELAV  
      
      如果[$ BATLVL -ge 1],則BATLVL = $(cat / sys / class / power_supply / BAT80 /容量); 那麼如果[! -a / tmp / batwarn]; 然後通知發送--urgency =緊急--expire-time = 5000 --app-name =電池--icon =電池“電池通知”“請斷開電源”; touch / tmp / batwarn; elif [$ BATLVL -le 40]; 那麼如果[! -a / tmp / batwarn]; 然後通知發送--urgency =緊急--expire-time = 5000 --app-name =電池--icon =電池“ Battery Notification”“請連接電源” touch / tmp / batwarn; 否則,如果[-a / tmp / batwarn]; 然後rm -f / tmp / batwarn; fi fi fi
      1.    xxxtonxxx 他說:

        我不明白的是需要創建一個不存儲任何值也不存儲任何東西的空文件,因為您正在檢查的內容需要在執行腳本時檢查,而不是事後或對其進行比較或對其進行任何比較風格。 我認為創建文件不是最佳選擇。 您是否將其創建為檢查點或其他內容,以便它不會多次運行?

    2.    盧西亞諾·拉加薩(Luciano Lagassa) 他說:

      您好,發生的來源有一些錯誤,我將其清理得更乾淨,似乎工作得很好。

      狀態= acpi | awk'{print $ 3}'NUMBER = acpi | awk'{print $ 4}'| 如果expr匹配“ $ STATUS”,則剪切-c 1-2“正在放電”,然後回顯“正在下載$ NUMBER%”,如果[$ NUMBER -le 40],則顯示“請連接電源” --expire-time = 5000 --app-name =電池--icon =電池“電池通知”“請連接電流” fi elif expr匹配“ $ STATUS”“充電”然後回顯“ Loading $ NUMBER% “如果[[$ NUMBER -ge 80],則回顯”,請關閉電源。“通知-發送--urgency =緊急--expire-time = 5000 --app-name = Battery -icon = battery”電池通知“”請斷開電源“ fi fi
  10.   喬尼127 他說:

    您好,您評論的內容更多是都市傳說,而不是其他任何內容。 我最近買了一台筆記本電腦,開始尋找有關此主題的信息,結論是:始終將電池充電至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
      聯合國saludo
      Slimbook團隊

  12.   他說:

    伙計,這是一個不錯的博客,我剛剛發現了它,我已經對Ubuntu進行了大約15天的測試,而且一切似乎都非常有趣,快速並且...好吧,我真的很喜歡這個世界,這個訪問過的博客似乎對我來說,最好。

  13.   弗雷德里克Linux 他說:

    pss是我幾個月前創建的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%到60%之間),它才會開始再次充電,因此您可以完美地工作如果您經常移動此模式,請使用此模式。

    5.-當前的技術通常是鋰,因此它們不會受到記憶效應的困擾,許多年前在bios中進行過幾次充電/放電循環以清潔或試圖恢復電池的選擇就不再有意義。 在鎳鎘合金中更有意義,而在金屬氫化鎳鎳中則更不那麼有意義,但在鋰(Lithium,Life,Lipo)中則沒有意義。

    6.-如果考慮到第1點和第3點的內容,請勿長時間使電池放電,因為它們會一點一點地放電。 如果您的筆記本電腦的電池處於“筆記本電腦模式”,並且長時間不使用它,此腳本將是一個很好的警告方式,因此理想的做法是將電池的電量保持在80-85%左右收費,因為這是他們如何最好地保持一段時間的負載,實際上,這是您當天購買時應該如何到達的。

    需要注意的是,要知道最後5%(95-100%)的電池充電成本要高得多,因此,如果您急於多次使用它,那麼等待它達到100時就不值得了%僅佔5%。

    聯合國saludo
    大衛。

    1.    拉夫 他說:

      很好的解釋..非常感謝

  15.   法比安 他說:

    下午好,我正在嘗試通過播放類似於其他通知的聲音的方式來編輯增加您的股票的提示,但是它不能播放,您可以通過告訴我我做錯了什麼來幫助我。
    ejemplo。

    notify-send -h字符串:聲音文件:/usr/share/sounds/KDE-Sys-Error-Printing.ogg«測試»«這是聲音通知測試»

  16.   迭戈 他說:

    好…
    不僅僅是削減

    結果=cut -c 1-2 tmp_bateria.txt

    不應該做tr嗎?

    結果=tr "%," " " < tmp_bateria.txt

    但是,如果割傷了,如果電池電量為100,則需要10(-c 1-2),然後要求您連接。
    啊...我自己回答。 在運行此腳本的情況下,您永遠不應達到100🙂在連接適配器的情況下,這是我目前的情況:p
    謝謝。

  17.   馬里奧 他說:

    你好出色的腳本,我正在考慮做類似的事情,但是改用電子電荷控制器,例如,當電池電量達到100%時,它將停止向其發送電荷並直接從能源中獲取能量。 以這種方式,例如,選擇充電至80℅,當我達到該水平時,控制器停止向電池發送能量,僅從電源獲取電流,而無需連接和斷開,不必要地花費時間,同時使電池始終在避免過早退化的範圍內工作

  18.   何塞·阿爾貝托·查韋斯·阿爾瓦雷斯 他說:

    對不起,您認為您可以使腳本可以激活繼電器來停用筆記本電腦的負載,並在筆記本計算機處於低負載水平時激活它。