Ответы:
Я просто хотел ответить, поскольку использовал совет на этой странице для настройки своей 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%». Однако нам нужно удалить «процент» -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. Следовательно, вы должны «экранировать» знак процента, поставив \
перед каждым символ обратной косой черты ( ) %
, чтобы оболочка не интерпретировала его (неправильно).
Так что в основном заменить
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
фу надеюсь, что это для вас, как это для меня! (в конце концов!)
Вы можете настроить работу cron, которая будет проверять состояние батареи каждые 5/10 минут, а затем, в зависимости от процента батареи, будет воспроизводиться какой-либо звук.
Для воспроизведения звука вы можете использовать
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%, будет воспроизводиться ваш предоставленный звуковой файл!
Надеюсь это поможет!
Один из простых способов сделать это - добавить простую проверку в ваш 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"]; затем aplay /home/felipelalli/Music/siren.wav; fi [: ожидается целочисленное выражение: остаются в ➜ ~ acpi Батарея 0: разрядка, 9%, осталось 00:17:56
На самом деле я использовал ответ Энди Пайна, но он не сработал для меня. Крон выполнил код, но он не воспроизводил звук. Наконец я нашел решение и поделился им здесь:
Шаг 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
Этот скрипт воспроизводит battery_low.mp3, если ноутбук разряжается, а заряд меньше или равен 15%. (Если подключено питание переменного тока, оно не предупредит вас). Этот код также предупреждает вас, если заряд составляет 100%. Если вы не хотите получать оповещения о полностью заряженном состоянии, удалите остальную часть из этого кода.
Шаг 3: Сделайте файл исполняемым с помощью следующей команды.
chmod +x ~/bin/battery_alert
Шаг 4: Запустите этот файл с помощью cron, добавив следующую команду в конец файла с crontrab -e
командой opend by .
*/5 * * * * /home/user/bin/battery_alert
(Не забывайте иметь пустую строку после этой команды)