Antworten:
Ich wollte nur antworten, da ich die Ratschläge auf dieser Seite zum Konfigurieren meines eigenen crontab -e
Jobs verwendet habe.
Ich leite Lubuntu (vertrauenswürdig) und das oben Genannte hat bei mir nicht funktioniert, aber mit ein wenig Nachbesserung hat es funktioniert. Mein Erfahrungslevel ist, dass ich relativ fähig bin, grundlegende Skripte und Befehle zu lesen, aber weniger in der Lage bin, sie in Linux Distos von Grund auf neu zu schreiben. Ich erwähne das, denn wenn ich einen funktionierenden Batteriealarm zusammenschustern kann, sollten die meisten von Ihnen, die dies lesen, dies auch können!
SO .... das Drehbuch und eine grundlegende Erklärung ....
Gemäß den obigen Beiträgen von Glutanimate und Scott Goodgame (danke Jungs!) Habe ich im Grunde Folgendes getan:
So erhalten Sie mpg123 und können Audio abspielen:
sudo apt-get install acpi mpg123
Zu öffnende Datei zum Schreiben des Befehls:
crontab -e
Befehl zum Eingeben am Ende der Datei:
*/1 * * * * if [ `acpi -b | awk ' { print ( $(NF-2)-0)}'` -lt "15" ] ; then mpg123 /home/andy/Alarm.mp3 ; fi
Sternchen am Start
Die fünf Sternchen stehen für die Häufigkeit, mit der die Befehle ausgeführt werden sollen.
*/1 * * * *
bedeutet "jede Minute ausführen".
WENN / DANN / FI:
IF [ stuff inside these brackets ] ; THEN do something ; FI
Ich stelle mir vor, die meisten von Ihnen sind mit IF / THEN-Anweisungen sehr vertraut. Das FI am Ende schließt die IF-Anweisung ab
Audio abspielen:
mpg123 /home/andy/Alarm.mp3
Dies wird einfach verwendet mpg123
, um eine Datei abzuspielen, die Alarm.mp3
sich in meinem Ausgangsverzeichnis befindet /home/andy/
.
Batterieinformationen ausgeben:
acpi -b
dies gibt einfach den Batteriestatus aus. Auf meinem Laptop liefert es Ergebnisse wie:
Battery 0: Discharging, 74%, 02:35:18 remaining
Pipe to awk Befehl
| awk ' { print ( $(NF-2)-0)}'` -lt "15"
Okay, also leiten wir die Ausgabe des obigen Batteriestatus weiter und drucken den Sekunden-vom-Ende-Wert (NF-2), der im obigen Beispiel '74% 'ist. Wir müssen jedoch den Prozentsatz -0 entfernen . Wir wollen den aktuellen Wert mit dem Wert 15 -lt "15" vergleichen . Also, um es in einfachem Englisch zusammenzufassen,
WENN der Wert der Batterie WENIGER ALS 15% ist, DANN wird eine Audiodatei abgespielt
Ich schätze, dass ich es etwas heruntergefahren habe und vielleicht meine Erklärung verbessert werden könnte, aber ich hoffe, es wird jemand anderem helfen, einen Alarm für die Batterie hinzuzufügen und zu vermeiden, dass sich ihre Laptops plötzlich ausschalten!
Viel Glück!
Okay ... also es stellt sich heraus, dass wenn mein Laptop aufgeladen wird, die Ausgabe von
acpi -b
ist:
Battery 0: Charging, 35%, 01:04:08 until charged
während auf Batterie ist
Battery 0: Discharging, 36%, 01:22:36 remaining
Verwenden Sie dazu den eingangs genannten Parameter von
print ( $(NF-2)-0)
gibt unterschiedliche Ergebnisse aus, denn denken Sie daran, das NF- Wert- Bit gibt an, wie viele Elemente vom Ende der Ausgabe bis zur Anzeige rückwärts, also mit der Ausgabe auf Batterie, angezeigt werden
Battery 0: Discharging, 36%, 01:22:36 remaining
$(NF-2)
gibt "36%" aus, während mit dem Laptop aufladen,
Battery 0: Charging, 35%, 01:04:08 until charged
$(NF-2)
gibt '00: 50: 12 'aus, dh die verbleibende Zeit bis zum Laden.
Das -0
Nach- $(NF-2)
Minus setzt den Wert auf Null. Wenn der Wert also ein Prozentwert ist, wird -0
er von "36%" auf "36" geändert. Wenn der Ausgabewert als nicht numerisch wahrgenommen wird, z. B. die Zeitausgabe von '01: 04: 08 'wie oben, -0
lautet der zurückgegebene Wert ' 0 '. So können Sie mein Problem sehen - wenn mein Laptop aufgeladen ist, ist der Ausgabewert immer '0'. Da ich einen Alarm auslösen möchte, wenn der Ausgabewert unter 15 liegt, wird ein Batteriealarm ausgelöst, der beim Laden jede Minute ertönt!
Ich habe etwas mehr über die Ausgabe des awk
Befehls nachgelesen und es stellte sich heraus, dass ich nicht den zweiten Wert vom Ende an lesen musste. Ich konnte am Anfang der Ausgabe beginnen und vorwärts springen. Dies ist viel besser, da mein Batteriestatus in Bezug auf die Anzahl der Parameter gleich beginnt, egal ob er geladen oder batteriebetrieben ist, dh der vierte Parameter von Anfang an ist immer der Ladewert in Prozent.
SO ... damit es den vierten Wert liest, ändert sich der Befehl von
awk ' { print ($(NF-2)-0)}'
zu
awk ' { print ($4)-0}'
oder in seiner ganzen Pracht:
*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'` -lt "15" ] ; then mpg123 /home/andy/Alarm.mp3 ; fi
Wieder hoffe ich, dass jemand hilft! Viel Glück und vielen Dank fürs Lesen!
Okay, also ein bisschen mehr herumstöbern und ich habe auch herausgefunden, wie man die Lautstärke auf 100% stellt und die Stummschaltung aufhebt, bevor man den Alarm spielt. Haben Sie die Lautstärke auf leise gestellt oder stumm geschaltet ?!
Wie auch immer, der Befehl, den Sie brauchen, ist:
*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'` -lt "15" ] ; then pactl set-sink-volume 0 100% && pactl set-sink-mute 0 0 && mpg123 /home/andy/Alarm.mp3 ; fi
Wie Sie sehen, habe ich nur die Befehlszeichenfolge eingefügt
pactl set-sink-volume 0 100% && pactl set-sink-mute 0 0 &&
(die &&
binden einfach mehrere Befehle zusammen)
Nochmals viel Glück an alle!
Okay, also ... eine letzte (hoffentlich!) Änderung ... anscheinend ist das Prozentzeichen ein besonderes Zeichen, wenn Cron-Tasks ausgeführt werden. Aus diesem Grund müssen Sie das Prozentzeichen durch Setzen eines Backslash ( \
) vor jedes 'maskieren', %
damit es von der Shell nicht (falsch) interpretiert wird.
Also im Grunde ersetzen
100%
mit
100\%
Daher ist der Befehl, den Sie wirklich brauchen:
*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'` -lt "15" ] ; then pactl set-sink-volume 0 100\% && pactl set-sink-mute 0 0 && mpg123 /home/andy/Alarm.mp3 ; fi
puh hoffe das sortiert es für dich so wie es für mich hat !! (schließlich!)
Sie können einen Cron-Job einrichten, der alle 5 bis 10 Minuten den Batteriestatus überprüft und dann abhängig vom prozentualen Batteriestatus einen Ton ausgibt.
Zum Abspielen des Tons können Sie verwenden
mpg123
Dateiname.mp3
Um es zu installieren
sudo apt-get install mpg123
Mit diesem Befehl können Sie den Batteriestatus von der Befehlszeile abrufen
upower -i /org/freedesktop/UPower/devices/battery_BAT0
Mit können grep
Sie die genauen Informationen wie folgt extrahieren
upower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state|to\ full|percentage"
Jetzt können Sie all diese Dinge in ein Shell-Skript schreiben (und auch eine if
Bedingung, um zu prüfen, ob der Batteriestatus unter 10% liegt) und einfach den Pfad dieses Shell-Skripts zu cron job angeben.
Nach jeweils 5 Minuten (Sie können dieses Intervall ändern) wird Ihr Batteriestatus überprüft. Wenn die Batterie weniger als 10% beträgt, wird die von Ihnen bereitgestellte Audiodatei abgespielt.
Hoffe das hilft!
Eine einfache Möglichkeit, dies zu tun, besteht darin, Ihrer crontab eine einfache Überprüfung hinzuzufügen (cron ist ein System, mit dem die Dinge regelmäßig und benutzerdefiniert im Hintergrund ausgeführt werden.)
Zuerst müssen Sie einen Befehlszeilen-MP3-Player und acpi installieren, um den Batteriestatus lesen zu können.
Führen Sie von einem Terminal aus Folgendes aus, um die Pakete zu installieren.
sudo apt-get install acpi mpg123
Geben Sie als Nächstes, während Sie sich noch im Terminal befinden, crontab -e
Folgendes an das Ende der Datei ein. Ändern Sie einfach den Benutzer in Ihren Benutzernamen und die .mp3 in Ihren Dateinamen in Ihrem Home-Verzeichnis.
*5 * * * * if [ `acpi |awk '{print substr($NF, 0, length($NF)-1)}'` -lt "10" ] ; then mpg123 /home/user/SuperCoolSound.mp3 ;fi
Drücke Strg-O (der Buchstabe) und Enter, um zu speichern. Drücke Strg-x zum Verlassen
Zusätzliches Material, das Sie vielleicht lesen möchten ...
acpi |awk '{print substr($NF, 0, length($NF)-1)}'
-lt "10"]; dann aplay /home/felipelalli/Music/siren.wav; fi [: Integer-Ausdruck erwartet: verbleibend in ac ~ acpi Batterie 0: Entladen, 9%, 00:17:56 verbleibend
Eigentlich habe ich die Antwort von Andy Pyne benutzt, aber es hat bei mir nicht funktioniert. Der Cron hat den Code ausgeführt, aber den Sound nicht abgespielt. Endlich habe ich die Lösung gefunden und teile sie hier:
Schritt 1: Installieren Sie mpg3
sudo apt-get install acpi mpg123
Schritt 2:
Speichern Sie den folgenden Befehl in~/bin/battery_alert
#!/bin/bash
PATH=/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
if [ `acpi -b | awk ' { print ($3)}'` == "Discharging," ] ; then
# Discharging
# Monitor for low battery
if [ `acpi -b | awk ' { print ($4)-0}'` -le "15" ] ; then
pactl set-sink-volume 0 75\% && pactl set-sink-mute 0 0 && mpg123 /home/user/battery_low.mp3 ;
fi
else
# Charging
if [ `acpi -b | awk ' { print ($4)-0}'` -eq "100" ] ; then
# Fully charged
pactl set-sink-volume 0 75\% && pactl set-sink-mute 0 0 && mpg123 /home/user/battery_full.mp3 ;
fi
fi
Dieses Skript gibt die Datei battery_low.mp3 wieder, wenn der Laptop entladen wird und die Ladung höchstens 15% beträgt. (Wenn eine Wechselstromquelle angeschlossen ist, werden Sie nicht gewarnt). Dieser Code warnt Sie auch, wenn die Gebühr 100% beträgt. Wenn Sie keine Warnung für den voll aufgeladenen Zustand erhalten möchten, entfernen Sie den else-Teil aus diesem Code.
Schritt 3: Führen Sie den folgenden Befehl aus, um die Datei ausführbar zu machen.
chmod +x ~/bin/battery_alert
Schritt 4: Führen Sie diese Datei mit cron aus, indem Sie den folgenden Befehl am Ende der Datei opend by- crontrab -e
Befehl hinzufügen .
*/5 * * * * /home/user/bin/battery_alert
(Vergessen Sie nicht, nach diesem Befehl eine leere Zeile zu setzen.)