Linux的开机启动配置随linux的版本不同,有一些不同之处。
网上说的那些配置文件如 inittab,rc.local,rc.d并不是都有的,这对初学者造成了困惑。
有没有什么是比较通用的方式呢,还好有!
① :linux中有个东西叫做“运行级别”,在命令行中敲runlevel后回车,能够获取当前系统的运行级别(N 0~N 6)。
② :运行级别的不同,对应系统开机时的启动过程、启动脚本也不同,各运行级别对应的启动脚本,存放地点就是/etc下的rc0.d~rc6.d这些文件夹。
③ :使用命令ls -all查看rc0.d~rc6.d任一文件夹中的文件,发现这里面都是链接,链接的文件都指向/etc/init.d/。这就意味着实际运行的启动脚本都在/etc/init.d/中,不要问为什么设计成这吊样,我也不知道为啥。。。
④ :于是依葫芦画瓢:
1:在/etc/init.d中创建一个我们需要的开机启动脚本(保证脚本的权限,直接chmod 777拉倒,省得烦)。
2: 然后在系统正常运行时的runlevel对应的/etc/rcX.d下,建立一个指向刚刚在/etc/init.d中新创建的脚本就可以了(有点绕。此外注意:链接名字的有效部分和实际脚本名字请取一样的,如实际脚本若为zhouke,那么链接文件应叫Sxxzhouke,xx指编号,随意)。
3:重启测试。
(树莓派1、2、3官网系统镜像,ubuntu10.4,ubuntu14.4,某公司嵌入式设备的linux2.6.33,centos 7.01)都是这种思路。
程序开机启动之环境变量:
实际项目中,开机启动程序的运行还会需要连带执行其他的程序,这时其他程序的执行就需要环境变量。
而init.d中的脚本执行时,bash.bashrc等个性化系统变量配置文件可能还未执行,当时的环境变量会非常少。
那么我们采取直接在脚本执行时加入环境变量的方式。
(如我在实际项目中61850Svr启动时连带需要启动Forexxx等程序:)
如此就可以轻松应对程序开机启动了!