文章目录
- 程序开机自启动
- 先制作一个可执行程序
- 第一种 通过命令行实现程序开机自启动
- 第二种 通过 Linux 系统镜像实现程序开机自启动
- scp工具文件传输小问题
程序开机自启动
原因:做成产品后,用户直接开机使用,总不能在开机执行程序后才可以使用吧。
先制作一个可执行程序
在ubuntu上编写如下demo.c,再用(四)配置有线网口、SSH登陆、文件传输以及运行交叉编译程序测试中配置好的交叉编译工具生成可以执行文件demo,最后借助scp工具发送到板子。
第一种 通过命令行实现程序开机自启动
输入指令,打开文件:
vi /etc/init.d/rcS
添加开机执行程序目录,如/root/zhua下面的demo可执行文件:
重启测试:
reboot
可以看到程序开机自启动了,但是停不下来:
打开新的ssh窗口,输入查看demo进程状态的指令:
ps -aux|grep demo|grep -v grep
说明:ps -aux 是向终端输出系统进程,grep demo 是将demo进程过滤出来,grep -v grep 是略过grep进程。
再输入杀死demo进程的指令:
kill -9 1580
这里根据实际pid号进行kill。这里为什么是-9 ,可以再ubuntu输入指令查看:
kill -l
这里不详细说:大概就是软中断,来杀死demo进程。
优化一下,让demo在后台运行,只需要在/etc/init.d/rcS里面的 执行文件目录后面加上一个 “&”
重启测试:
比之前效果好一点
同样用上面方法把demo进程杀死:
这次demo进程id就变成了1582,所以这个进程id号是会变得。
第二种 通过 Linux 系统镜像实现程序开机自启动
将demo可执行文件拷贝至LinuxSDK 源码目录下的"out/t113_i/tlt113-evm-emmc/longan/buildroot/target/root/zhua"目录下。
命令修改 LinuxSDK 目录下的 rcS 配置文件,修改内容同第一种
vi /home/zhua/SDK/T113-i_v1.0/platform/framework/auto/rootfs/etc/init.d/rcS
在/home/zhua/SDK/T113-i_v1.0下,重新编译LinuxSDK:
./build.sh
生成镜像:
./build.sh pack
开机通过串口测试:
然后要在2秒间隙快速杀死demo进程,并且修改 /etc/init.d/rcS停止自启动
scp工具文件传输小问题
当重新刷镜像后,也就是,当远程主机的 SSH 主机密钥发生变化时(例如重新安装操作系统或更新 SSH 服务),Ubuntu再用scp工具传输文件,就会出现U一个警告,提示主机密钥不匹配。通过移除旧的条目,可以避免这个警告,并允许添加新的主机密钥:
输入清除条目指令:
ssh-keygen -f "/home/zhua/.ssh/known_hosts" -R "192.168.1.101"
然后再次用scp传输
好嘞,问题解决。