Linux /etc/rc.local中的脚本未自动运行
我在raspberry pi的rc.local文件中放了一些脚本。我添加脚本的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 &
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的文章: