CentOS开机自动启动脚本
前言
Linux作为服务器实在是太香了,唯一麻烦的就是服务器重启的时候,一些程序又得手动启动。其实可以通过添加开机自动启动脚本的方法来进行自动启动。
自启动方法
在/etc/rc.d/rc.local中添加启动脚本
chmod +x /etc/rc.d/rc.local
二、在 /etc/rc.d/rc.local 中添加要执行的指定命令
在 /etc/rc.d/rc.local 中添加要执行的指定命令,格式如下:
su - 用户 -c “执行命令”
示例如下:
su - root -c "/home/source/start-api.sh"
手动配置
1、在/etc/rc.d/rc.local中添加服务启动命令
/etc/rc.d/rc.local脚本会在Centos系统启动时被自动执行,所以可以把需要开机后执行的命令直接放在这里。
示例:配置开机启动apollo
vi /etc/rc.d/rc.local
想简单点可以像上面这样直接将服务的启动命令添加到/etc/rc.d/rc.local中。
也可以自己编写服务启动的脚本。由于重启时是以root用户重启,需要保证root用户有脚本执行权限。
1)、编写服务启动的脚本
vi /opt/script/autostart.sh
#!/bin/bash /root/Downloads/docker-quick-start/docker-compose up -d
2)、赋予脚本可执行权限(/opt/script/autostart.sh是你的脚本路径)
chmod +x /opt/script/autostart.sh
3)、打开/etc/rc.d/rc.local文件,在末尾增加如下内容
/opt/script/autostart.sh
3)、在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限
chmod +x /etc/rc.d/rc.local
通过chkconfig配置
在CentOS7之前,可以通过chkconfig来配置开机自启动服务。
chkconfig相关命令:
chkconfig –-add xxx //把服务添加到chkconfig列表 chkconfig --del xxx //把服务从chkconfig列表中删除 chkconfig xxx on //开启开机自动启动 chkconfig xxx off //关闭开机自动启动 chkconfig --list //查看所有chklist中服务 chkconfig --list xxx 查看指定服务
chkconfig运行级别level和启动顺序的概念:
chkconfig --list
这里的0到6其实指的就是服务的level。
–level<等级代号> 指定系统服务要在哪一个执行等级中开启或关毕。
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
比如如下命令:
//设定mysqld在等级3和5为开机运行服务 chkconfig --level 35 mysqld on //设置network服务开机自启动,会把2~5的等级都设置为on chkconfig network on
表示开机启动配置成功。
服务的启动顺序又指的什么呢?
服务的启动顺序是指在服务器启动后服务启动脚本执行的顺序。
以系统默认服务network说明:
cat /etc/init.d/network
其中 # chkconfig: 2345 10 90用来指定服务在各个level下的启动顺序。
该配置的含义是network服务在2、3、4、5的level下的启动顺序是10,在1和6的level等级下的启动顺序是90。
chkconfig配置的服务启动顺序最后都会在/etc/rc.d/目录下体现出来:
cd /etc/rc.d/
文件中脚本命名规则,首字母K表示关闭脚本,首字母S表示启用脚本,数字表示启动的顺序.
chkconfig配置实例
通常kibana的官方配置是没有介绍如何配置开机自启动的。这里我配置kibana开机自启动来说明。
1、在/etc/init.d目录下,新建脚本kibana
cd /etc/init.d
vi kibana
脚本内容如下:
#!/bin/bash # chkconfig: 2345 98 02 # description: kibana KIBANA_HOME=/usr/local/kibana-6.2.4-linux-x86_64 case $1 in start) $KIBANA_HOME/bin/kibana & echo "kibana start" ;; stop) kibana_pid_str=`netstat -tlnp |grep 5601 | awk '{print $7}'` kibana_pid=`echo ${kibana_pid_str%%/*}` kill -9 $kibana_pid echo "kibana stopped" ;; restart) kibana_pid_str=`netstat -tlnp |grep 5601 | awk '{print $7}'` kibana_pid=${kibana_pid_str%%/*} kibana_pid=`echo ${kibana_pid_str%%/*}` kill -9 $kibana_pid echo "kibana stopped" $KIBANA_HOME/bin/kibana & echo "kibana start" ;; status) kibana_pid_str=`netstat -tlnp |grep 5601 | awk '{print $7}'` if test -z $kibana_pid_str; then echo "kibana is stopped" else pid=`echo ${kibana_pid_str%%/*}` echo "kibana is started,pid:"${pid} fi ;; *) echo "start|stop|restart|status" ;; esac
注意⚠️:
每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。
第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 – 代替运行级。
第二行对服务进行描述,可以用\ 跨行注释。
#!/bin/bash #chkconfig:2345 98 02 #description:kibana
解释说明:
配置kibana服务在2、3、4、5的level等级下脚本执行顺序是98,
1、6的level等级下脚本执行顺序是01。
2、增加脚本的可执行权限
chmod +x kibana
3、查看chkconfig list
chkconfig --list
4、把服务添加到chkconfig列表
chkconfig --add kibana
5、设置kibana服务自启动
chkconfig kibana on //开启开机自动启动
6、查看kibana服务自启动状态
chkconfig --list kibana
7、服务的启动、停止、重启和状态查看
//查看服务状态 service kibana status //服务启动 service kibana start //服务停止 service kibana stop //服务重启 service kibana restart