Приветствую!
На Raspberry pi подключена кнопка для управления приложением
Написан скрипт для управления:
#!/bin/bash
GPIO_PIN=587
START_STOP=$1
if [ $# -lt 1 ]; then
echo "Use: $0 start/stop"
else
if [ "${START_STOP}" = "start" ]; then
echo ${GPIO_PIN} >/sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio${GPIO_PIN}/direction
while true; do
if [ "$(cat /sys/class/gpio/gpio${GPIO_PIN}/value)" == '0' ]
then
echo "Push button event"
/path/to/apps > /dev/null 2>&1
sleep 0.5
fi
done
elif [ "${START_STOP}" = "stop" ]; then
echo ${GPIO_PIN} >/sys/class/gpio/unexport
else
exit
fi
fi
Написан systemd unit:
[Unit]
Description=Button event
After=network.target
[Service]
Type=simple
User=root
ExecStart=/bin/bash /usr/local/sbin/script.sh start
ExecStop=/bin/bash /usr/local/sbin/script.sh stop
PIDFile=/run/button.pid
[Install]
WantedBy=multi-user.target
Все работает но запущенный таким образом скрипт потребляет много процесорного времени (25-27%)
Возможно есть более элегантный способ опрашивать содержимое файла /sys/class/gpio/gpio${GPIO_PIN}/value? Возможно ли использовать для этого incrond?
У кого есть какие идеи?