在CentOS7中,实现开机启动程序主要有两种方式:
1)把要启动的程序配置成自定义的系统服务,该方式我早已介绍过,请阅读:CentOS7添加自定义系统服务。
2)在/etc/rc.local脚本文件中编撰启动程序的脚本linux 开机启动应用程序,本文将详尽介绍这些技巧。
1、/etc/rc.local是/etc/rc.d/rc.local的软链接
执行ls-l/etc/rc.local瞧瞧。
/etc/rc.local是/etc/rc.d/rc.local文件的软链接linux源代码分析,也就是说她们是同一个文件。
2、rc.local文件的原始内容
#!/bin/bash
#THISFILEISADDEDFORCOMPATIBILITYPURPOSES
#Itishighlyadvisabletocreateownsystemdservicesorudevrules
#torunscriptsduringbootinsteadofusingthisfile.
#Incontrasttopreviousversionsduetoparallelexecutionduringboot
#thisscriptwillNOTberunafterallotherservices.
#Pleasenotethatyoumustrun'chmod+x/etc/rc.d/rc.local'toensure
#thatthisscriptwillbeexecutedduringboot.
touch/var/lock/subsys/local
英文意思如下:
#添加此文件是为了兼容。
#强烈建议创建自己的systemd服务或udev规则,便于在引导期间运行脚本,而不是使用此文件。
#与先前版本不同,因为在引导期间并行执行,此脚本不会在所有其他服务然后运行。
#请注意,必须运行'chmod+x/etc/rc.d/rc.local',以确保在引导期间执行此脚本。
明白了吧。
尽管Linux强烈建议采用自定义的系统服务实现开机自启动程序,不过我觉得在rc.local中配置开机启动程序也是一个不错的方式,由于rc.local的配置更简单明了,所以仍被广泛的使用。
3、rc.local文件的配置
rc.local本质上是一个shell脚本文件linux开源软件,可以把启动时须要执行的命令写在上面,启动时将按次序执行。
接出来我们来测试它。
1)在rc.local中添加以下脚本。
/usr/bin/date>>/tmp/date1.log#把当前时间追加写入到/tmp/date1.log中。
/usr/bin/sleep10#睡眠10秒。
/usr/bin/date>>/tmp/date2.log#把当前时间追加写入到/tmp/date2.log中。
2)更改/etc/rc.d/rc.local的可执行权限。
chmod+x/etc/rc.d/rc.local
3)重启服务器。
4)查看日志文件/tmp/date1.log和/tmp/date2.log的内容。
4、应用经验
1)rc.local脚本在操作系统启动时只执行一次。
2)环境变量的问题。
在rc.local脚本中执行程序时是没有环境变量的,假若您执行的程序须要环境变量,可以在脚本中设置环境变量,也可以用su切换用户来执行,比如:
su-oracle-c"sqlplusscott/tiger@/tmp/test.sql"
以上命令的涵义就是以oracle用户登陆再执行sqlplus命令。
3)不要让rc.local挂起。
rc.local是一个脚本,是按次序执行的,执行完一个程序后才能执行下一个程序,假若某程序不是后台程序,就应当加&让程序运行在后台,否则rc.local会挂起。
可以用以下脚本来测试,rc.local的内容如下:
/usr/bin/date>>/tmp/date1.log#把当前时间追加写入到/tmp/date1.log中。
/usr/bin/sleep100#睡眠100秒。
/usr/bin/date>>/tmp/date2.log#把当前时间追加写入到/tmp/date2.log中。
若果采用了以上脚本linux 开机启动应用程序,Linux系统在启动完成100后,就会出现以下的登入界面。