概述
有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务。在解问题之前先来看看Linux的启动流程。
一、Linux的启动流程
主要顺序就是:
1. 加载内核
2. 启动初始化进程
3. 确定运行级别
4. 加载开机启动程序
5. 用户登录
启动流程的具体细节可以看看Linux 的启动流程
第4步加载启动程序其实是两步:
- init进程逐一加载开机启动程序,其实就是运行指定目录里的启动脚本。
- 在运行完指定目录里面的程序后init进程还会去执行/etc/rc.local 这个脚本。
ps:“指定目录”是指在第3步中设置的运行级别对应的目录。
要完成我们的需求,我们使用第4步中的任意一种方式都可以。
下面分别就是这两种方式的具体实现:
二、chkconfig
1. 编写脚本autostart.sh(这里以开机启动redis服务为例),脚本内容如下:
#!/bin/sh
#chkconfig: 2345 80 90
#description:开机自动启动的脚本程序
# 开启redis服务 端口为6379
/usr/local/service/redis-2.8.3/src/redis-server --port 6379 &
脚本第一行 “#!/bin/sh” 告诉系统使用的shell;
脚本第二行 “#chkconfig: 2345 80 90” 表示在2/3/4/5运行级别启动,启动序号(S80),关闭序号(K90);
脚本第三行 表示的是服务的描述信息
注意: 第二行和第三行必写,负责会出现如“服务 autostart.sh 不支持 chkconfig”这样的错误。
2. 将写好的autostart.sh脚本移动到/etc/rc.d/init.d/目录下
3. 给脚本赋可执行权限
cd /etc/rc.d/init.d/
chmod +x autostart.sh
4. 添加脚本到开机自动启动项目中
chkconfig --add autostart.sh
chkconfig autostart.sh on
到这里就设置完成了,我们只需要重启一下我们的服务器,就能看到我们配置的redis服务已经可以开机自动启动了。
三、修改/etc/rc.local脚本
末尾加入如下语句
/usr/local/service/redis-2.8.3/src/redis-server --port 6379 &
切忌 命令行末尾要加上 [ & ] 符号(介绍), 表示任务在后台执行。否则会阻塞后面添加的命令行执行。
监控脚本:
#!/bin/bash
while true
do
procnum=` ps x |grep "/home/hgh/goproj/genes/diskgenes"|grep -v grep| wc -l`
if [ $procnum -eq 0 ]; then
nohup /home/hgh/goproj/genes/diskgenes& >> /tmp/genes.log
echo "error:" + `date` >> /tmp/genesstart.log
fi
sleep 30
done
kill -9 `pidof gens`
kill -9 `ps -aux | grep "/usr/bin/gens" | grep -v grep | awk '{print $2}'`
等级代号列表:
- 等级0表示:表示关机
- 等级1表示:单用户模式
- 等级2表示:无网络连接的多用户命令行模式
- 等级3表示:有网络连接的多用户命令行模式
- 等级4表示:不可用
- 等级5表示:带图形界面的多用户模式
- 等级6表示:重新启动
PS:
https://blog.csdn.net/karchar/article/details/52489572
https://blog.csdn.net/daidaineteasy/article/details/54864776
https://blog.csdn.net/chinabestchina/article/details/72686002
转载:
https://www.cnblogs.com/phpdragon/p/9013460.html
https://blog.csdn.net/xinyflove/article/details/79375217
最后
以上就是威武心锁为你收集整理的centos6.x 添加开机启动服务的全部内容,希望文章能够帮你解决centos6.x 添加开机启动服务所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复