网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
第2种方式是这样的,一定要先说清楚,只针对Debian 9 stretch,因为就像1说的,差异真的比较大。通常来说,需要自启动的应用程序路径都会添加在/etc/rc.local这个文件里面,然而搞笑的是,在Debian 9 stretch里/etc路径下,根本就没有rc.local这个文件,但是!!!通过systemctl status rc-local却能看到,rc.local这个服务却是存在的。
看紧贴着红框底部Active状态项,可以看到,此时的rc.local是非活动的服务。为了解决这个问题,我们需要自建rc.local文件。控制台输入cat </etc/rc.local,然后添加如下代码
#!/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.
exit 0
EOF
输入EOF时就代表代码段的结束。除了这种方法外,自己也可以新建文档,通过vi指令,向文档中添加相同代码(此时就不需要输入最下方的EOF了),记得文档名字必须是rc.local就行。
文件保存完毕后,通过chmod +x rc.local给文件加权限,然后移动文件到/etc路径下,reboot系统。
系统重启完毕后,控制台输入systemctl status rc-local再查看rc.local服务状态,可以看到已经是active了。
此时说明自建的rc.local文件随系统启动已经没什么问题了,这时,将自己需要开机自动运行的程序路径,写到rc.local文件中的exit 0上方,即可完成自定义应用随系统开机自启动。
最后,再说些其他需要注意的事情:
1.rc.local这个文件最好在哪用就,在哪建立在哪添加文件内容,我的意思是,最好不要在windows端建立rc.local然后添加文档内容,再传给开发板,因为不同系统间文档的编码格式不同,有可能引起rc.local在开发板端没办法正常使用。
2.关于用户应用程序自启动的调试打印问题,我测试了两个应用程序,一个只做最简单的打印输出,另一个是不停的循环打印。其中,系统启动后,第一个测试程序并没有打印出来调试信息,进入系统后,通过ps指令看不到这个程序,但是通过top指令可以看到程序是正在运行的;第二个测试程序可以正常循环打印,进入系统后,通过ps指令依旧看不到这个程序,但是通过top指令也可以看到程序是正在运行的。还不清楚为什么会这样,但是程序应该都是能够正常开机自启动运行,等明白为什么了以后,会在下面做补充更新。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!