/etc/rc.local中的脚本不能自动运行

时间:2017-07-02 12:41:31

标签: linux bash shell raspberry-pi

我已经在我的覆盆子pi的rc.local文件中运行了一些脚本。我添加脚本的rc.local文件的结尾如下所示:

sh /home/pi/HAS_system/execute/CAM.sh &
sh /home/pi/HAS_system/execute/VID.sh &
sh /home/pi/HAS_system/camera/stopvidcam.sh &
sh /home/pi/HAS_system/camera/autostopvidcam.sh &
#sh /home/pi/HAS_system/execute/FS.sh &
sh /home/pi/HAS_system/execute/GS.sh &
sh /home/pi/HAS_system/execute/HTS.sh &
sh /home/pi/HAS_system/execute/MS.sh &
#sh /home/pi/HAS_system/execute/RS.sh &
#sh /home/pi/HAS_system/execute/SS.sh &
sh /home/pi/HAS_system/execute/WC.sh &

exit 0

这些脚本用于监视本地Web服务器的各种服务。我确信前四个脚本CAM.sh,VID.sh,stopvidcam.sh和autostopvidcam.sh正在通过网页访问它们并发现它们按预期工作。但是,以下脚本似乎无法正常工作,GS.sh,HTS.sh,MS.sh和WC.sh.这些脚本应该在适当的传感器触发器上发送邮件和推文。我可以从命令行手动运行这些:

sudo sh /home/pi/HAS_system/execute/MS.sh &

并且可以检查传感器触发器是否正常工作,但它们无法从rc.local运行。

我尝试使用

检查这些进程是否在后台运行
ps aux | grep "/home/pi/HAS_system/execute/MS.sh"

并找到了这个结果:

root       592  0.2  0.1   1912  1112 ?        S    17:04   0:09 sh /home/pi/HAS_system/execute/MS.sh
pi       30116  0.0  0.2   4280  1852 pts/0    S+   18:07   0:00 grep --color=auto /home/pi/HAS_system/execute/MS.sh

第一项肯定会在启动时显示脚本的进程ID,但触发器不起作用。

触发器代码(MS.sh,GS.sh等)类似,编码为:

#!/bin/bash

dname=$(date +"%Y_%m_%d-%H_%M_%S")
code="MS"

while :
do
        new=$(sudo python /home/pi/HAS_system/sensor_check/MScheck.py)
        echo $new
        old=$(sudo bash /home/pi/HAS_system/data/data_reader.sh  /home/pi/HAS_system/data/sensor_data.ini $code)

        if [ "$new" != "$old" ]
        then
                curl -d "dname=$dname&sid=$code&val=$new" http://localhost/devcalls/updatesensorpanel.php
                sudo bash /home/pi/HAS_system/data/data_reader.sh  /home/pi/HAS_system/data/sensor_data.ini $code $new
        fi

        if [ "$new" = "Motion" ]
        then
                sudo python3 /home/pi/HAS_system/comm/tweet.py $new
                sudo python3 /home/pi/HAS_system/comm/mail.py $new
        fi
done

这到底出了什么问题?

0 个答案:

没有答案