আমার ব্যাটারি লিনাক্স মিন্টে মারা যাওয়ার সময় আমি কীভাবে একটি সতর্কতা পেতে পারি?


31

আমি যেটা স্বীকার করতে চাইছি তার চেয়েও এটি আমার সাথে ঘটে, তবে কখনও কখনও আমি বিদ্যুৎ কমতে দেখি না কারণ এটি কেবলমাত্র আমার স্ট্যাটাস বারে প্রদর্শিত হয়, তারপরে কম্পিউটারটি কেবল ছাড় দেয়। আমি একটি বড় সতর্কতা চাই যা এটি হওয়ার আগে আমাকে সতর্ক করে দেয়। এটির কি আমাকে সতর্ক করার কোনও উপায় আছে? উবুন্টুর একটি দুর্দান্ত পপআপ রয়েছে যা আপনাকে বলে যে এটি কমছে।


আপনার ডেস্কটপ পরিবেশ থেকে "কিছু" করতে পাওয়ার-ম্যানেজারটি কনফিগার করুন - এটি সাধারণত "কিছুই না" থেকে "কমান্ড চালান" থেকে "হাইবারনেট" / "পাওয়ার অফ" পর্যন্ত হতে পারে।
পিটার্ফ

কোন ডেস্কটপ পরিবেশ?
রেনান

1
@ পেটার্ফ আমার কাছে কেবল "পাওয়ার অফ" এবং "হাইবারনেট" বিকল্প রয়েছে।
ট্র্যাভিস রেডার

@ রেনান দারুচিনি চালাচ্ছেন।
ট্র্যাভিস রেডার

@ ট্র্যাভিসআর দুঃখিত, আমি বোঝাতে চাইছিলাম যে সমালোচনামূলক ব্যাটারি স্তর পৌঁছে গেলে আচরণটি কনফিগার করুন
পিটার্ফ

উত্তর:


26

স্ক্রিপ্ট লিখুন!

battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`
if [ $battery_level -le 10 ]
then
    notify-send "Battery low" "Battery level is ${battery_level}%!"
fi

তারপরে এটি প্রতি কয়েক মিনিট বা তার পরে চালানোর জন্য ক্রোন করুন। তবে হ্যাঁ, আপনি যদি জিইউআইয়ের মাধ্যমে এটি করতে পারেন তবে এটি সম্ভবত এটি করার আরও ভাল উপায়।


এই পদ্ধতির সুবিধা রয়েছে যে এটি সামান্য টুইটের সাথে কেবল কোনও ডিস্ট্রো / ডেস্কটপ পরিবেশের সংমিশ্রণের ক্ষেত্রে প্রযোজ্য।
পারকিনস

আমার দারুচিনি পরিবেশে ' জিইউআইয়ের
মাইকেল

7

পুনরায়: hdgarrood এর উত্তর, cronচালানোর জন্য সেটিং notify-sendআসলে বেদনাদায়ক চিকিত্সা হিসাবে দেখা গেছে। (আমি মনে করি crontab -eডিফল্টরূপে, ভাগ্যক্রমে পুনরায় বুটগুলি জুড়ে থাকবে)। আমি বেশ কয়েকটি গাইড অনুসরণ করেছিলাম, শেষ পর্যন্ত এটি ঠিক কী ঠিক করেছিল তা আমি নিশ্চিত নই, তবে প্রতি 5 মিনিটে এই পরীক্ষক চালানোর জন্য আমার সম্পূর্ণ সেটআপ রয়েছে:

$ crontab -e

*/5 * * * * sh /home/nrw/.notify-send_setup
*/5 * * * * sh /home/nrw/.battnotif

$ cat .notify-send_setup

#!/bin/bash
touch $HOME/.dbus/Xdbus
chmod 600 $HOME/.dbus/Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.dbus/Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> $HOME/.dbus/Xdbus

exit 0

$ cat .battnotif

#!/bin/bash
export DISPLAY=:0
XAUTHORITY=/home/nrw/.Xauthority

if [ -r "$HOME/.dbus/Xdbus" ]; then
    . "$HOME/.dbus/Xdbus"
fi

battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`

# I tried to only notify when not charging, but could not get it to work
# STATUS=$(cat /sys/class/power_supply/ADP1/online)
# if [ $battery_level -le 15 ] && [ $STATUS == "0" ]

if [ $battery_level -le 15 ]
then
    /usr/bin/notify-send -u critical "Battery low" "Battery level is ${battery_level}%!"
    echo 'batt low' >> /home/nrw/cron.log
fi

echo 'ran batt' >> /home/nrw/cron.log

chmod +xব্যাশ স্ক্রিপ্টগুলি নিশ্চিত করুন ।


5

আমি এখন নিম্নলিখিত চালাতে:

$ crontab -e
*/5 * * * * /home/<my username>/bin/checkLowBattery
$ cat /home/<my username>/bin/checkLowBattery
#!/bin/bash

POWERSUPPLY="/sys/class/power_supply/ACAD/online" # could be different on your system!
TOO_LOW=20 # how low is too low?
NOT_CHARGING="0"
ICON="/usr/share/icons/ubuntu-mono-dark/status/24/battery-low.svg" # eye candy

export DISPLAY=:0

BATTERY_LEVEL=$(acpi -b | grep -P -o '[0-9]+(?=%)')
STATUS=$(cat $POWERSUPPLY)

if [ $BATTERY_LEVEL -le $TOO_LOW -a $STATUS = $NOT_CHARGING ]
then
    /usr/bin/notify-send -u critical -i "$ICON" -t 3000 "Battery low" "Battery level is ${BATTERY_LEVEL}%!"
fi

exit 0

আপনি দেখতে পাচ্ছেন এটি কিছু পরিবর্তন সহ কেবল কমলা নরওহাল কোড:

  • কোনও ডিবিস ট্র্যাবির নয়, একরকম আমার এটির দরকার নেই
  • কোডের শুরুতে কিছু "ধ্রুবক" ভেরিয়েবলগুলিতে রাখুন
  • ব্যাটারি চার্জ করা হয় না কেবল তখনই সতর্কতা প্রয়োগ করা হয় (একবার দেখুন man test, এটি অন্যান্য বিষয়গুলির মধ্যে কীভাবে অ্যান্ডস করতে হয় তা ব্যাখ্যা করে))
  • যোগ করা আইকন (আপনার সিস্টেমে কিছু পরীক্ষার্থীর সন্ধান করুন এর মতো $ find /usr/share/icons/ -iname "*batt*low*":)
  • মিলিসেকেন্ডে মেয়াদ শেষ হবে

chmod +xআপনার স্ক্রিপ্টগুলি ভুলে যাবেন না , তারপরে আপনি এগুলি সরাসরি ক্রোন (ট্যাব) থেকে চালাতে পারেন, প্রয়োজন নেই sh

(এটি Xmonad ব্যবহার করে উবুন্টুতে কাজ করে))


3

যেহেতু আপনি দৃশ্যত দারুচিনি চালাচ্ছেন, তাই কেবল মনিটরিং এবং শাটডাউন (বিএএমএস) সহ ব্যাটারি অ্যাপলেট ইনস্টল করুন ।

প্যানেলে ডান ক্লিক করুন → + প্যানেলে অ্যাপলেট যুক্ত করুনউপলব্ধ অ্যাপলেট (অনলাইন) , অনুসন্ধান উইজেটে 'বিএএমএস' টাইপ করুন এবং এটি ইনস্টল করুন এবং কনফিগার করুন।

এটি সর্বাধিক ফ্ল্যাশযুক্ত নয়, তবে আমার ল্যাপটপটি যখন অজান্তে আনপ্লাগড করা হয়েছিল তখন পর্যন্ত এটি ইতিমধ্যে আমাকে সতর্ক করেছে।


2

মাইনর টুইস্ট - নোপপিক্সে (ওপি দ্বারা ব্যবহৃত মিন্ট নয়) বিজ্ঞপ্তি-প্রেরণ উপলভ্য ছিল না (libnotify-bin প্যাকেজ ইনস্টল করা নেই), সুতরাং পরিবর্তে আমি সতর্কতার জন্য এটি দরকারী খুঁজে পেয়েছি:

xmessage Battery low & mplayer /usr/lib/libreoffice/share/gallery/sounds/beam.wav

আমি এটিকে কেবল এলএক্সডিইডি এর ব্যাটারি মনিটর প্যানেলের অ্যালার্ম কমান্ডের মধ্যে ফেলে দিয়েছি, স্ক্রিপ্টের দরকার নেই।

এটি ধরে নিয়েছে যে আপনি LibreOffice ইনস্টল করেছেন, কিন্তু .wav একটি দুর্দান্ত কম পাওয়ার সাউন্ড করে। নোপপিক্সে কার্যত কোনও .ogg নেই।


1
একজনের zenityপরিবর্তে xmesssageএবং aplayপরিবর্তে ভাল থাকতে পারেmplayer
মতিজা নালিস

1

আমারও একই সমস্যা ছিল এবং আমি একটি কাজ খুঁজে বের করতে পারি। আমি লিনাক্স মিন্টের সংগ্রহস্থল থেকে GKrellM নামে একটি অ্যাপ ইনস্টল করেছি। এটি আপনার মেশিনে প্রচুর পরিমাণে নজরদারি করে এবং সেখানে ব্যাটারি রয়েছে। অ্যালার্মের সাথে সেটআপ করুন, এটি আমার জন্য কবজির মতো কাজ করে।

আরও তথ্য এখানে:

http://www.gkrellm.net/


GKrellM আমার পক্ষে কাজ করেনি। এটি অনেক পুরানো এবং বিজ্ঞপ্তি সিস্টেমটি সঠিকভাবে কাজ করে না।
বেমিপেফ

1

ইস্যুটি কে-ডি পরিবেশে সম্পর্কিত। আমি মিন্টমায়া কেডিE_ রূপান্তরটি নিয়ে একই সমস্যা। আমি যখন Mint9_GNome নিয়ে কাজ করেছি তখন একটি খুব কার্যকর পপ-আপ উপস্থিত হয়েছিল যখন একটি নির্দিষ্ট মাত্রায় স্বল্প-বিদ্যুৎ পৌঁছে যায় (নতুন ইনস্টলগুলিতে স্বতঃ-কনফিগার আউট_সে_বক্স)। খুব বিরক্তিকর পরামর্শ ছাড়াই বন্ধ করা হচ্ছে এবং কোনও সহায়তা এমনকি প্রচুর গুগলিং প্রতিষ্ঠা করা হয়নি :(


1

আমার একই সমস্যা আছে এবং এটি সত্যিই হতাশাব্যঞ্জক। আমি ব্যাটারি অ্যালার্ট.শ স্ক্রিপ্টটি ব্যবহার করে সমাধান করেছি :

#!/bin/bash

BATTERY=$(upower -e | grep 'BAT')

while :
do
    BATTERY_PERCENTAGE=$(upower -i $BATTERY|grep percentage|awk '{ print $2 }'|sed s/'%'/''/g)
    CABLE=$(upower -d | grep -n2 line-power | grep online | awk '{ print $3 }')

    if [[ "$BATTERY_PERCENTAGE" -lt "10" && $CABLE = "no" ]]; then

        notify-send --urgency=critical "WARNING: Battery is about to die"  "Plug in the power cable"
        play /usr/share/sounds/KDE-Sys-Warning.ogg &> /dev/null 
    fi

sleep 10

done

আমি কেডিএ ব্যবহার করছি তবে আপনি এটি প্রতিটি ডেস্কটপ পরিবেশের সাথে ব্যবহার করতে পারেন। আপনাকে এটি রুট ব্যবহারকারী হিসাবে চালাতে হবে না ক্রন্টব সিনট্যাক্সের সাথে পাগল হতে হবে। আপনি যদি কোনও শব্দ সতর্কতা চান তবে আপনার কেবলমাত্র বিজ্ঞপ্তির শব্দ পরিবর্তন করতে হবে। ডেস্কটপ পরিবেশটি যখন ব্যাটারি অ্যালার্টলআনচার.শ স্ক্রিপ্টের সাথে $ USER / বিন ফোল্ডারে স্ক্রিপ্টটি রাখে আপনি স্বয়ংক্রিয়ভাবে স্ক্রিপ্টটি শুরু করতে চান না :

#!/bin/bash

function getRunningProcesses 
{
    ps -aux | grep -v grep | grep BatteryAlert.sh
}

if [[ -n "$(getRunningProcesses)" ]] ; then
    exit
fi

BatteryAlert.sh&

তারা নির্বাহযোগ্য কিনা তা নিশ্চিত করুন:

chmod u+x $USER/bin/BatteryAlert*

তারপরে নিম্নলিখিত কমান্ডটি চালান:

ln -s /home/$(USER)/bin/BatteryAlertLauncher.sh .config/autostart/

আপনি এই আদেশটি প্রবেশ করে বাশ থেকে নিজেই সতর্কতা স্ক্রিপ্টটি চালাতে পারেন:

BatteryAlertLauncher.sh

0

যেহেতু আমার কাছে জিনোম শেল বা দারুচিনি ইনস্টল করা নেই তাই আমি সরাসরি সাহায্য করতে পারি না কারণ উত্স অ্যাক্সেস করা অনেক কার্যকর হতে পারে কারণ জাভাস্ক্রিপ্টের সাথে এ জাতীয় মূল প্রসারকে যুক্ত করা সহজ।

আপনার খোলার উচিত:

/usr/share/cinnamon/js/ui/status/power.js

এবং শতাংশের জন্য অনুসন্ধান করুন - পরবর্তী সময়ে, আপনার পপ-আপ বার্তা বা সতর্কতা যুক্ত করতে সক্ষম হওয়া উচিত।


আকর্ষণীয়, জানেন না যে এই জিনিসগুলি জাভাস্ক্রিপ্টে রয়েছে। তবে কোনও / স্থিতি ডিরেক্টরি এবং কোনও পাওয়ার.জেএস আমি / দারুচিনি / জেএস ডিরেক্টরিতে যে কোনও জায়গায় খুঁজে পেতে পারি।
ট্র্যাভিস রেডার

আপনি কি এটি ব্যবহার করে মূল থেকে এটি অনুসন্ধান করার চেষ্টা করেছেন:find / -type f -name power.js
নেসিফ্লোপনুরি

দৌড়ে গেল, কিছুই পাওয়া গেল না।
ট্র্যাভিস রেডার

0

ডিআর হিসাবে জিনোমের সাথে আমি এটি আমার আর্চ লিনাক্সে এটি করেছি:

#!/bin/bash

eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";
battery_level=`acpi -b | grep -P -o '[0-9]+(?=%)'`

STATUS=$(cat /sys/class/power_supply/ACAD/online)
if [ $battery_level -le 15 ] && [ $STATUS == "0" ]
then
    /usr/bin/notify-send -u critical "Battery low" "Battery level is ${battery_level}%!"
fi

ল্যাপটপ তৈরির উপর নির্ভর করে ACADইন শব্দটি STATUS=$(cat /sys/class/power_supply/ACAD/online)পরিবর্তিত হবে। আপনার ল্যাপটি কোনও এসি অ্যাডাপ্টারে প্লাগ ইন করা হয়েছে কিনা তা অনুসন্ধান করতে ব্যবহৃত হয়। এখানে আমার ক্রোনটব দেখতে কেমন:

* * * * * bash <path to script>

স্ক্রিপ্টটি দিয়ে সম্পাদনযোগ্য করতে ভুলবেন না chmod u+x <path to script>


0

এই acpiসহজটি আমার পক্ষে খুব সুন্দরভাবে কাজ করে, কেবলমাত্র সাধারণ প্যাকেজ ইনস্টল করার প্রয়োজন রয়েছে (কোনও ডিমনস, নির্দিষ্ট ডেস্কটপ এনভায়রুমেন্টস বা এর মতো নয়)।

আপনার ব্যবহারকারী crontab ( crontab -e) এ নিম্নলিখিতগুলি রাখুন (সমস্তই এক লাইনে, এটি পাঠযোগ্যতার জন্য এখানে বিভক্ত):

*/3 * * * * acpi --battery | 
    awk -F, '/Discharging/ { if (int($2) < 15) print }' | xargs -ri 
    env DISPLAY=:0 zenity --warning --text "battery low\n{}"

এটি যা করে তা হ'ল ব্যাটারি স্তর ( acpi --battery) যাচাই করা হয় এবং আপনি যদি চার্জারের সাথে সংযুক্ত না হন ( /Discharging/) এবং যদি ব্যাটারি < 15% হয় তবে প্রতি 3 মিনিটে এটি হবে (*/3 ) প্রদর্শন করে zenity

জেনটির পরিবর্তে আপনি এর পরিবর্তে xmessage(সত্যিকারের স্পার্টান মেশিনে) বা এমন কিছু ব্যবহার করতে পারেনaplay -q /usr/lib/libreoffice/share/gallery/sounds/cow.wav অডিও বিজ্ঞপ্তিগুলির ব্যবহার (যার সুবিধা রয়েছে যে এটি আপনার কীবোর্ড টাইপ করতে বাধা দেবে না, এবং একাধিক সেশন সহ একাধিক ব্যবহারকারী ল্যাপটপের জন্যও কাজ করবে, যেখানে DISPLAY=:0হ্যাক ব্যর্থ হবে)

আপনার যদি কিছু সমালোচনামূলক পর্যায়ে মেশিন স্থগিত / হাইবারনেট করতে হয় তবে এই উত্তরটি দেখুন


0

বিএএমএস নামে একটি অ্যাপলেট ডাউনলোড করুন। এটি যখন আপনাকে ব্যাটারি নির্দিষ্ট করে একটি নির্দিষ্ট স্তরে পৌঁছে তখন এটি স্বয়ংক্রিয়ভাবে আপনাকে সতর্ক করে দেবে। এটি সহজ সমাধান।


0

এখানে সমস্ত উত্তর থেকে সমস্ত তথ্যের সাহায্যে আমি একটি স্ক্রিপ্ট তৈরি করেছি এবং এটি গিটল্যাবের একটি সংগ্রহস্থলে রেখেছি।

এটি বিজ্ঞপ্তিগুলি প্রদর্শন করবে যখন:

  • আপনার কেবলটি প্লাগযুক্ত এবং ব্যাটারি 30% এর নিচে চলে গেছে
  • আপনার কেবল প্লাগ হয়েছে এবং ব্যাটারিটি ৮০% এর উপরে চলে গেছে

https://gitlab.com/gitaarik/battery-health-notifications

এটিকে পরিবেশের বিস্তৃত পরিসরে কাজ করার জন্য অবদানগুলি অত্যন্ত স্বাগত।

এটি লেখার সময় স্ক্রিপ্ট:

#!/bin/bash

# Run this script as a cronjob every 5 minutes or so, to get notifications when
# battery percentage goes below 30% or above 80%.
# Cronjob line example:
# */5 * * * * /bin/bash /path/to/battery_health_notifications.sh

# This line is to make notify-send always work, also when run in a crontab.
# https://askubuntu.com/questions/298608/notify-send-doesnt-work-from-crontab/346580#346580
export $(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ | tr '\0' '\n')

BATTERY_PATH=$(upower -e | grep battery)
LINE_POWER_PATH=$(upower -e | grep line_power)
BATTERY_PERCENTAGE=$(upower -i $BATTERY_PATH | grep 'percentage:' | awk '{ print $2 }' | sed 's/%//')
CABLE_PLUGGED=$(upower -i $LINE_POWER_PATH | grep -A2 'line-power' | grep online | awk '{ print $2 }')

if [[ $CABLE_PLUGGED == 'yes' ]]; then

    if [[ $BATTERY_PERCENTAGE -gt 80 ]]; then
        notify-send --urgency=critical "Battery optimization" "Battery reached 80%, unplug the power cable to optimize battery life."
    fi

else

    if [[ $BATTERY_PERCENTAGE -lt 30 ]]; then
        notify-send --urgency=critical "Battery optimization" "Battery is below 30%, plug in the power cable to optimize battery life."
    fi

fi
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.