1 自启动的原理是将想要重启时运行的文件放置在主目录下,在程序开机时就开始运行程序。(python /home/pi/ <文件> )
1.1 开机自启需要一个开机自启配置文件:
示例:
#!/bin/bash # /etc/init.d/<service name> ### BEGIN INIT INFO # Provides: servoblaster # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: <Short Discription> # Description: <Discription> ### END INIT INFO case "$1" in start) echo "Starting <service name>" <command to run> & ;; stop) echo "Stopping <service name>" sudo kill $(ps aux | grep -m 1 ‘<command name>‘ | awk ‘{ print $2 }‘) sudo kill $(ps aux | grep -m 1 ‘<command name>‘ | awk ‘{ print $2 }‘) ;; *) echo "Usage: sudo service <service name> start|stop|restart" exit 1 ;; esac exit 0
1.2 完整实例
#!/bin/bash # /etc/init.d/<pismartcar_demo> ### BEGIN INIT INFO # Provides: servoblaster # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: <Short Discription> # Description: <Discription> ### END INIT INFO case "$1" in start) echo "Starting <pismartcar_demo>" <command to run>python /home/pi/voicecontrol/voicecontrol.py & ;; stop) echo "Stopping <pismartcar_demo>" sudo kill $(ps aux | grep -m 1 ‘<command name>‘ | awk ‘{ print $2 }‘) sudo kill $(ps aux | grep -m 1 ‘<command name>‘ | awk ‘{ print $2 }‘) ;; *) echo "Usage: sudo service <pismartcar_demo> start|stop|restart" exit 1 ;; esac exit 0
2,格式非常重要。Linux和Windows的空格符有很大的不同。在Linux下运行应当是unix格式的,在sublime下编写代码时需要将格式调整到unix
3,
第二行 <service name> 填写自启服务的名称.
填写 <Short Discription>和<Discription>
在start里面 填写后台程序运行命令, 末尾要加‘ &‘ 保证在后台运行. 这里运行的路径需要使用绝对路径.
stop里面把<command name> 喜欢丞后台运行程序的名称. 建议在手动运行start里的命令后, 再使用`ps aux`来查看运行的名称. 保证stop的时候能够正确关闭服务, 也不会关错其他服务.
注意, 服务配置运行后无法查看返回信息, 建议先手动运行:
sudo service <service name> start
查看能否正常运行,并使用:
sudo service <service name> stop
查看程序能否正常关闭
3.1. 文件命名:
文件命名与<service name>相同.不需要后缀
3. 配置:
添加可执行权限:
sudo chmod +x <service name>
拷贝到`/etc/init.d/`
sudo cp <service name> /etc/init.d/<service name>
开机自启:
sudo update-rc.d <service name> defaults
状态查询:
systemctl status pismartcar_demo.service