因为一个项目,需要两个树莓派之间通信,即一个主机建立SOCKET服务,并负责控制电机,一个从机负责连接主机,进而控制控制电机运转。
目标:二者同时开机,而后从机连上主机。
一、在etc/init.d目下创建一个控制文件
(一)创建文件
文件名:startboot
位置:etc/init.d
操作:sudo chmod -R 777 /etc/init.d
因为要把文件拷贝至init.d文件夹,所以需要修改文件夹的权限。
【注意:etc前面记得加上/】如果输入sudo chmod -R 777 etc/init.d 会提示:chmod: 无法访问’etc/init.d’: 没有那个文件或目录
startboot代码如下:
#!/bin/sh
#/etc/init.d/startboot
### BEGIN INIT INFO
# Provides:startboot
# Required-Start:$remote_fs $syslog
# Required-Stop:$remote_fs $syslog
# Default-Start:2 3 4 5
# Default-Stop:0 1 6
# Short-Description: startboot
# Description: This service is used to start my applaction
### END INIT INFO
case "$1" in
start)
echo "start your app here."
su pi -c "exec ~/Motor/startboot.sh"
;;
stop)
echo "stop your app here."
;;
*)
echo "Usage: service startboot start|stop"
exit 1
;;
esac
exit 0
(二)设置脚本可执行权限
sudo chmod 777 /etc/init.d/startboot
【注意】千万别忘记这条,折腾了我半天
(三)将该脚本作为服务设置开机自动加载
sudo update-rc.d startboot defaults
【注意】千万别忘记这条,折腾了我老半天
二、在pi目录下创建一个启动脚本文件
(一)创建文件startboot.sh
文件名:startboot.sh
位置:home/pi/Motor
startboot.sh代码如下:
#!/bin/sh
sleep 10
cd /home/pi/Motor
sudo python server_relay_motor.py
说明:sleep 10 可以根据自己脚本特性来设置,时间如果太短,可能会出现脚本不能运行的情况(因为需要保证系统已经启动,基本服务已经运行)
(二)设置文件权限
sudo chmod 777 startboot.sh
【注意】千万别忘记这条,折腾了我又一个半天
三、将要启动的脚本放置于startboot.sh中指定的目录
代码中的目录:/home/pi/Motor
代码中的文件:server_relay_motor.py
【注意】此时可以用命令先测试startboot.sh是否有效
命令:sudo ./startboot.sh
如果提示权限不够,则需再执行
命令:sudo chmod 777 statrboot.sh
四、重启树莓派
sudo reboot