Linux /etc/rc.local中的脚本未自动运行

Linux /etc/rc.local中的脚本未自动运行,linux,bash,shell,raspberry-pi,Linux,Bash,Shell,Raspberry Pi,我在raspberry 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 &

我在raspberry 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。这些脚本应该在适当的传感器触发器上发送邮件和tweet。我可以从命令行手动运行这些命令,如下所示:

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

这里到底出了什么问题?

可能是时间问题。如果脚本依赖于任何网络服务,如果它们在脚本执行之前没有启动,您将无法获得所需的结果。您可能需要添加一两个睡眠。顺便说一句:
sh
不是
bash
。查看这篇关于使用sudo的文章: