2016-04-09 11 views
0

Bu komut dosyasını sürekli olarak arka planda çalıştırmak istiyorum. Önyükleme sırasında başlatabiliyordum ve çalıştırıyordum, ancak bir süre sonra çalışmayı durdurdu. Sorun nedir?Bash Shell Komut Dosyasını arka planda önyüklemeden sürekli olarak çalıştırma. (Raspberry Pi)

#!/bin/sh 

### BEGIN INIT INFO 
# Provides:   myfirst 
# Required-Start: $network 
# Required-Stop:  
# Default-Start:  2 3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: myfirst 
# Description:  Speaker switch 
### END INIT INFO 


echo "18" > /sys/class/gpio/export 
echo "out" > /sys/class/gpio/gpio18/direction 

while true;do 
     ps cax | grep hairtunes > /dev/null 
     if [ $? -eq 0 ]; then 
     echo "0" > /sys/class/gpio/gpio18/value 
     else 
     echo "1" > /sys/class/gpio/gpio18/value 
     fi 
     sleep 5 
done 

exit 0 
+0

Nasıl başlatırsınız? /etc/init.d/ adresinden mi? Rc.local? ve hangi dağıtımları kullanıyorsunuz? –

+0

/etc/init.d Gönderen Raspbian. –

+0

Raspbian'da çekirdek dökümlerini etkinleştir, işlem çöktüğünde, çöp kutusunu analiz edebilir ve daha fazla bilgi alabilirsiniz. – ivanzg

cevap

0

Döngü içinde initscript içinde çalışmamalısınız. Init uzun süredir devam eden metinleri öldürecek. Ayrı scrip içine bütün mantığını

echo "18" > /sys/class/gpio/export 
echo "out" > /sys/class/gpio/gpio18/direction 

while true;do 
     ps cax | grep hairtunes > /dev/null 
     if [ $? -eq 0 ]; then 
     echo "0" > /sys/class/gpio/gpio18/value 
     else 
     echo "1" > /sys/class/gpio/gpio18/value 
     fi 
     sleep 5 
done 

ayıklamak ve initscipt gelen & ile çalıştırabilirsiniz. Bunun gibi:

#!/bin/sh 

### BEGIN INIT INFO 
# Provides:   myfirst 
# Required-Start: $network 
# Required-Stop:  
# Default-Start:  2 3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: myfirst 
# Description:  Speaker switch 
### END INIT INFO 

case "$1" in 
    start) 
    /path/to/the/script/above/with/logic.sh & 
    ;; 
    stop) 
    # you need to store pid to do this 
    ;; 
    *) 
    echo "Usage: $0 {start|stop}" 
    exit 1 
    ;; 
esac 

Çalışması gerekir. Ancak, bu en iyi çözüm değil. En iyisi, farklı bir konu olan süreci doğru bir şekilde şeytanlaştırmaktır.

İlgili konular