Answers:
我只是想回复,因为我使用了本页上的建议来配置自己的crontab -e
工作。
我正在运行Lubuntu(可信任),但以上内容对我而言不起作用,但稍作调整即可。我的经验水平是,我相对能够阅读基本脚本和命令,但在Linux Disto中从头开始编写它们的能力较差。我提到这是因为,如果我能将正在工作的电池警报器凑在一起,那么阅读此书的大多数人也应该能够做到!
等等...脚本和基本说明...
根据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
一开始的星号
五个星号表示运行命令的频率。
*/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
管道到awk命令
| awk ' { print ( $(NF-2)-0)}'` -lt "15"
好的,因此我们将上面的电池状态输出传递到管道中,并打印出第二个结束值(NF-2),在上面的示例中为“ 74%”。但是,我们需要删除'percentage'- 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时发出警报,因此它转换为电池警报,充电时每隔一分钟响一次!
我在awk
命令的输出中阅读了更多内容,事实证明,我不需要使它从末尾读取第二个值,我可以从输出的开头开始并向前跳过。无论是在充电还是在电池上,根据参数数量,我的电池状态都将以相同的方式开始,这要好得多,也就是说,从头开始的第四个参数始终是充电值(以百分比为单位)。
所以...使其读取第四个值,命令从
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
再次希望对您有所帮助!祝你好运,感谢您的阅读!
好吧,再来一点戳一下,我还想出了如何在播放警报之前将音量设置为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
如您所见,我所做的就是插入命令字符串
pactl set-sink-volume 0 100% && pactl set-sink-mute 0 0 &&
(&&
将多个命令绑定在一起)
再次祝大家好运!
好吧,所以...最后(希望如此!)编辑...显然,百分号是运行cron任务时的特殊标志。因此,您必须\
在每个百分号前加一个反斜杠()来“转义”百分号,%
以免shell误解。
所以基本上取代
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
phe希望它能像我一样为您排序!!(最终!)
您可以设置一个cron作业,该作业每5/10分钟检查一次电池状态,然后根据电池百分比播放一些声音。
要播放声音,您可以使用
mpg123
文件名.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"
现在,您可以将所有这些内容放入shell脚本(以及if
检查电池状态是否低于10%的条件),然后将此shell脚本的路径提供给cron job。
因此,每隔5分钟(您可以更改此间隔),将检查一次电池状态,如果电池电量不足10%,则将播放您提供的声音文件!
希望这可以帮助!
一种简单的方法是在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)}'
-lt“ 10”]; 然后播放/home/felipelalli/Music/siren.wav; fi [:预期的整数表达式:remainin➜〜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。(如果连接了交流电源,它将不会提示您)。如果收费是100%,此代码也会提醒您。如果您不希望收到充满电状态的警报,请从此代码中删除else部分。
步骤3:使用以下命令使文件可执行。
chmod +x ~/bin/battery_alert
步骤4:使用cron执行此文件,方法是在命令打开的文件末尾添加以下crontrab -e
命令。
*/5 * * * * /home/user/bin/battery_alert
(不要忘记在此命令后有一个空行)