Linux开机启动程序
在CentOS7中,实现开机启动程序主要有两种方法:
1)把要启动的程序配置成自定义的系统服务,该方法我已经介绍过,请阅读:CentOS7添加自定义系统服务。
2)在/etc/rc.local脚本文件中编写启动程序的脚本,本文将详细介绍这种方法。
1、/etc/rc.local是/etc/rc.d/rc.local的软链接
执行ls -l /etc/rc.local
看看。
/etc/rc.local是/etc/rc.d/rc.local文件的软链接,也就是说他们是同一个文件。
2、rc.local文件的原始内容
1 | #!/bin/bash |
中文意思如下:
1 | # 添加此文件是为了兼容。 |
明白了吧。
虽然Linux强烈建议采用自定义的系统服务实现开机自启动程序,不过我认为在rc.local中配置开机启动程序也是一个不错的方法,因为rc.local的配置更简单明了,所以仍被广泛的使用。
3、rc.local文件的配置
rc.local本质上是一个shell脚本文件,可以把启动时需要执行的命令写在里面,启动时将按顺序执行。
接下来我们来测试它。
1)在rc.local中添加以下脚本。
1 | /usr/bin/date >> /tmp/date1.log # 把当前时间追加写入到/tmp/date1.log中。 |
2)修改/etc/rc.d/rc.local的可执行权限。
1 | chmod +x /etc/rc.d/rc.local |
3)重启服务器。
4)查看日志文件/tmp/date1.log和/tmp/date2.log的内容。
4、应用经验
1)rc.local脚本在操作系统启动时只执行一次。
2)环境变量的问题。
在rc.local脚本中执行程序时是没有环境变量的,如果您执行的程序需要环境变量,可以在脚本中设置环境变量,也可以用su切换用户来执行,例如:
1 | su - oracle -c "sqlplus scott/tiger @/tmp/test.sql" |
以上命令的含义就是以oracle用户登录再执行sqlplus命令。
3)不要让rc.local挂起。
rc.local是一个脚本,是按顺序执行的,执行完一个程序后才会执行下一个程序,如果某程序不是后台程序,就应该加&让程序运行在后台,否则rc.local会挂起。
可以用以下脚本来测试,rc.local的内容如下:
1 | /usr/bin/date >> /tmp/date1.log # 把当前时间追加写入到/tmp/date1.log中。 |
如果采用了以上脚本,Linux系统在启动完成100后,才会出现以下的登录界面。
5、版权声明
C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。
来源:C语言技术网(www.freecplus.net)
作者:码农有道