【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
编写好程序之后,一般要求程序开机启动后就可以运行。所以这个时候,我们一般就会把程序流程放在开发板的启动脚本当中。如果程序比较简单的话,直接启动程序;当然程序复杂一点的话,就会有一个启动脚本,这样其他程序也可以通过这个启动脚本来运行。
1、准备测试程序
这里的测试程序是一段python脚本内容,我们假设它为run.py,内容如下所示,
#!/usr/bin/python
import os
import sys
import re
import time
cnt = 0
while True:
cnt += 1
time.sleep(1)
print(cnt)
2、先保证脚本运行是ok的
想要开发板开机的时候,就执行我们需要的程序,一般首先要保证程序是ok的。这种情况下,可以预先测试下,
feixiaoxing@raspberrypi:~/Desktop $ python run.py
1
2
3
3、准备在rc.local下面添加启动脚本
一般我们添加程序都是在rc.local下面添加的。这个rc.local位于/etc目录下面。但是这个目录一般属于root的管理权限,所以需要编辑一下rc.local文件。为了方便编辑,我们把/home/feixiaoxing/.vimrc拷贝到/root目录下,.vimrc的内容如下,
set nocompatible
set backspace=2
set number
set incsearch
有了这个.vimrc,我们就可以用vi编辑/etc/rc.local文件了,相关内容在exit 0前面添加即可,
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
sudo python /home/feixiaoxing/Desktop/run.py &
exit 0
4、测试和验证
测试方法比较简单,只需要sudo reboot一下开发板,接着通过ps aux | grep python确认程序在不在就可以了。
feixiaoxing@raspberrypi:~ $ ps aux | grep python
feixiao+ 1066 0.0 0.8 63168 34240 ? S 07:47 0:00 /usr/bin/python3 /usr/share/system-config-printer/applet.py
root 1193 0.0 0.0 10672 3712 ? S 07:47 0:00 sudo python /home/feixiaoxing/Desktop/run.py
root 1203 0.0 0.2 16180 8832 ? S 07:47 0:00 python /home/feixiaoxing/Desktop/run.py
feixiao+ 1529 0.0 0.0 6088 1920 pts/0 S+ 08:06 0:00 grep --color=auto python
5、更常见和通用的方式
这边这是一个程序的启动,更为常见的方式是启动一个auto.sh文件。这样后续如果还要启动其他的文件,只需要把相关的文件在auto.sh里面添加即可。
6、想查看启动程序的log怎么处理
这一点通过重定向就可以,假设程序名是process,那么可以在auto.sh添加这样的内容,
./process >> log.txt &
其中 >> 表示重定向,&表示脚本执行结束后,相关程序还能运行。