回答:
自分のcrontab -e
仕事を設定するためにこのページのアドバイスを使用したので、返信したかっただけです。
私はLubuntu(trusty)を実行していますが、上記はうまくいきませんでしたが、少し調整してみました。私の(経験)レベルは、基本的なスクリプトとコマンドを読むことは比較的可能ですが、Linux distoでは最初からそれらを書くことができないことです。動作中のバッテリーアラームを一緒にまとめることができれば、これを読んでいるほとんどの人も同様にできるはずだからです!
SO ....スクリプトと基本的な説明...
上記のGlutanimateとScott Goodgameの投稿によると(みんなありがとう!)、私は基本的に次のことをしました。
mpg123を取得してオーディオを再生するには:
sudo apt-get install acpi mpg123
コマンドを書き込むために開くファイル:
crontab -e
ファイルの最後に入力するコマンド:
*/1 * * * * if [ `acpi -b | awk ' { print ( $(NF-2)-0)}'` -lt "15" ] ; then mpg123 /home/andy/Alarm.mp3 ; fi
開始時のアスタリスク
5つのアスタリスクは、コマンドを実行する頻度を表します。
*/1 * * * *
「これを毎分実行」を意味します。
IF / THEN / FI:
IF [ stuff inside these brackets ] ; THEN do something ; FI
ほとんどの人は、IF / THENステートメントに精通していると思います。最後のFIはIFステートメントを終了します
オーディオを再生する:
mpg123 /home/andy/Alarm.mp3
これは単に、ホームディレクトリにあるmpg123
というファイルを再生するために使用します。Alarm.mp3
/home/andy/
出力バッテリー情報:
acpi -b
これは単にバッテリーの状態を出力します。私のラップトップでは、次のような結果が得られます。
Battery 0: Discharging, 74%, 02:35:18 remaining
Pipe to awkコマンド
| awk ' { print ( $(NF-2)-0)}'` -lt "15"
さて、我々は上記バッテリー状態の出力を配管しているので、印刷から2番目のエンド値INGの(NF-2)上記の例で'74%」です。ただし、「パーセンテージ」-0を削除する必要があります。現在の値を値15 -lt "15"と比較します。わかりやすい英語でまとめると、
バッテリーの値が15%未満の場合は、オーディオファイルを再生します
私はそれをいくらか馬鹿にしたことを感謝し、おそらく私の説明を改善できるかもしれませんが、バッテリーにアラームを追加し、ラップトップが突然突然電源を切るのを避ける方法を他の誰かが理解するのに役立つことを願っています!
幸運を!
さて...それで、ラップトップの充電中に、
acpi -b
は:
Battery 0: Charging, 35%, 01:04:08 until charged
一方、バッテリーでは
Battery 0: Discharging, 36%, 01:22:36 remaining
したがって、最初に述べたパラメータを使用して
print ( $(NF-2)-0)
NF- 値ビットは、出力の最後から表示するアイテムの数を指定するため、バッテリーの出力では
Battery 0: Discharging, 36%, 01:22:36 remaining
$(NF-2)
「36%」と出力されますが、充電中のラップトップでは、
Battery 0: Charging, 35%, 01:04:08 until charged
$(NF-2)
「00:50:12」、つまり充電されるまでの残り時間を出力します。
-0
後に$(NF-2)
値があるときにマイナスの値からゼロなので、%は-0
『36「から』 '36%のようなものから、それを変更します。上記の「01:04:08」の時間出力など、出力値が非数値として認識される場合、値-0
は「0」になります。だから、私の問題を見ることができます-私のラップトップが充電されているとき、出力値は常に「0」です。出力値が15未満のときにアラームを再生したいので、充電時に1分ごとにオフになるバッテリーアラームに変換されます!
awk
コマンドの出力をもう少し読んでみると、最後から2番目の値を読み取る必要はなく、出力の先頭から開始して前方にスキップできることがわかりました。これは、バッテリーの状態がパラメーターの数の点で充電中またはバッテリー上で同じであるため、はるかに優れています。つまり、最初から4番目のパラメーターは常にパーセント単位の充電値です。
SO ... 4番目の値を読み取るには、コマンドが
awk ' { print ($(NF-2)-0)}'
に
awk ' { print ($4)-0}'
またはその栄光の中で:
*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'` -lt "15" ] ; then mpg123 /home/andy/Alarm.mp3 ; fi
繰り返しますが、それが誰かを助けることを願っています!読んでくれてありがとう!
OK音量を低く設定するかミュートしましたか?!
とにかく、必要なコマンドは次のとおりです。
*/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
ご覧のとおり、私が行ったことはコマンド文字列を挿入することだけです
pactl set-sink-volume 0 100% && pactl set-sink-mute 0 0 &&
(は&&
複数のコマンドを結合するだけです)
繰り返しますが、幸運を祈ります!
さて、最後の1つ(できれば!)の編集...明らかに、パーセント記号は、cronタスクを実行するときの特別な記号です。したがって、\
それぞれの前にバックスラッシュ()を置いてパーセント記号を「エスケープ」する必要が%
あります。これにより、シェルが(誤)解釈しないようにします。
だから基本的に交換
100%
と
100\%
したがって、本当に必要なコマンドは次のとおりです。
*/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
あーと、それは私のために持っているとして、あなたのためにそれをソート希望!! (最終的に!)
5/10分ごとにバッテリーの状態を確認するcronジョブを設定し、バッテリーの割合に応じてサウンドを再生できます。
使用できるサウンドを再生するには
mpg123
filename.mp3
インストールする
sudo apt-get install mpg123
コマンドラインからバッテリーステータスを取得するには、このコマンドを使用できます
upower -i /org/freedesktop/UPower/devices/battery_BAT0
を使用しgrep
て、次のように正確な情報を抽出できます
upower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state|to\ full|percentage"
これで、これらすべてをシェルスクリプト(およびif
バッテリーステータスが10%未満かどうかを確認する条件)に入れて、このシェルスクリプトのパスをcronジョブに渡すことができます。
5分ごとに(この間隔を変更できます)バッテリーの状態がチェックされ、バッテリーが10%未満の場合、提供されたサウンドファイルが再生されます!
お役に立てれば!
これを行う簡単な方法の1つは、crontabに簡単なチェックを追加することです(cronは、バックグラウンドで定期的にユーザー定義に基づいて物事を実行するシステムです)。
最初に、バッテリーの状態を読み取ることができるように、コマンドラインmp3プレーヤーとacpiをインストールする必要があります。
ターミナルから次を実行してパッケージをインストールします。
sudo apt-get install acpi mpg123
次に、ターミナルにいる間crontab -e
に、ファイルの最後まで次のように入力します。ユーザーをユーザー名に変更し、.mp3をホームディレクトリのファイル名に変更するだけです。
*5 * * * * if [ `acpi |awk '{print substr($NF, 0, length($NF)-1)}'` -lt "10" ] ; then mpg123 /home/user/SuperCoolSound.mp3 ;fi
Control-O(文字)とEnterを押して保存します。Control-xを押して終了します
あなたが読みたいかもしれない余分なもの...
acpi |awk '{print substr($NF, 0, length($NF)-1)}'
➜〜if [ -lt "10"]; 次にaplay /home/felipelalli/Music/siren.wav; fi [:整数式が期待されます:残りin〜acpiバッテリー0:放電中、9%、00:17:56残り
実際、アンディ・パインの答えを使いましたが、うまくいきませんでした。cronはコードを実行しましたが、サウンドは再生しませんでした。最後に、私は解決策を見つけ、それをここで共有しました:
ステップ1: mpg3をインストールする
sudo apt-get install acpi mpg123
ステップ2:
次のコマンドを保存します~/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
このスクリプトは、ラップトップが放電中で充電が15%以下の場合にbattery_low.mp3を再生します。(AC電源が接続されている場合、警告は表示されません)。このコードは、料金が100%の場合も警告します。完全に充電された状態のアラートが必要ない場合は、このコードからelse部分を削除してください。
ステップ3:次のコマンドを使用して、ファイルを実行可能にします。
chmod +x ~/bin/battery_alert
手順4:コマンドによって開かれたファイルの末尾に次のコマンドを追加して、cronを使用してこのファイルを実行しますcrontrab -e
。
*/5 * * * * /home/user/bin/battery_alert
(このコマンドの後に空の行があることを忘れないでください)