直接回答:CentOS 6 用 /etc/rc.d/rc.local 或 chkconfig,CentOS 7 以后用 systemctl enable;新系统优先用 systemd,因为它的启动顺序、失败重试和日志都更好控制。
一、Centos上配置开机自启动的几种方式
方式一:直接在/etc/rc.d/rc.local中添加服务启动命令 方式二:通过chkconfig配置服务自启动 方式三:Centos7通过systemctl enble配置服务自启动
二、实践演示
1、在/etc/rc.d/rc.local中添加服务启动命令
/etc/rc.d/rc.local脚本会在Centos系统启动时被自动执行,所以可以把需要开机后执行的命令直接放在这里。
示例:配置开机启动apollo
1 | vi /etc/rc.d/rc.local |

想简单点可以像上面这样直接将服务的启动命令添加到/etc/rc.d/rc.local中。
也可以自己编写服务启动的脚本。由于重启时是以root用户重启,需要保证root用户有脚本执行权限。
1)、编写服务启动的脚本
1 | vi /opt/script/autostart.sh |
2)、赋予脚本可执行权限(/opt/script/autostart.sh是你的脚本路径)
1 | chmod +x /opt/script/autostart.sh |
3)、打开/etc/rc.d/rc.local文件,在末尾增加如下内容
1 | /opt/script/autostart.sh |
4)、在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限
1 | chmod +x /etc/rc.d/rc.local |
2、通过chkconfig配置
在CentOS7之前,可以通过chkconfig来配置开机自启动服务。 chkconfig相关命令:
1 | chkconfig –-add xxx //把服务添加到chkconfig列表 |
chkconfig运行级别level和启动顺序的概念:

chkconfig --list 这里的0到6其实指的就是服务的level。
–level<等级代号> 指定系统服务要在哪一个执行等级中开启或关毕。 等级0表示:表示关机 等级1表示:单用户模式 等级2表示:无网络连接的多用户命令行模式 等级3表示:有网络连接的多用户命令行模式 等级4表示:不可用 等级5表示:带图形界面的多用户模式 等级6表示:重新启动
比如如下命令:
1 | //设定mysqld在等级3和5为开机运行服务 |
表示开机启动配置成功。

服务的启动顺序又指的什么呢? 服务的启动顺序是指在服务器启动后服务启动脚本执行的顺序。 以系统默认服务network说明:
1 | 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/目录下体现出来:
1 | cd /etc/rc.d/ |

文件中脚本命名规则,首字母K表示关闭脚本,首字母S表示启用脚本,数字表示启动的顺序.
chkconfig配置实例 通常kibana的官方配置是没有介绍如何配置开机自启动的。这里我配置kibana开机自启动来说明。
1、在/etc/init.d目录下,新建脚本kibana
1 | cd /etc/init.d |
脚本内容如下:
1 | !/bin/bash |
注意⚠️: 每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。 第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。 第二行对服务进行描述,可以用\ 跨行注释。
1 | !/bin/bash |
2、增加脚本的可执行权限
1 | chmod +x kibana |
3、查看chkconfig list
1 | chkconfig --list |
4、把服务添加到chkconfig列表
1 | chkconfig --add kibana |
5、设置kibana服务自启动
1 | chkconfig kibana on //开启开机自动启动 |
6、查看kibana服务自启动状态
1 | chkconfig --list kibana |
如果2~5都是on,就表明会自动启动了

7、服务的启动、停止、重启和状态查看
1 | //查看服务状态 |
3、Centos7通过systemctl enble配置服务自启动
在Centos7后,更推荐通过systemctl来控制服务。
| 任务 | 旧指令 | 新指令 |
|---|---|---|
| 使某服务自动启动 | Chkconfig --level 3 httpd on | systemctl enable httpd.service |
| 使某服务不自动启动 | chkconfig --level 3 httpd off | systemctl disable httpd.service |
| 检查服务状态 | service httpd status | systemctl status httpd.service (服务详细信息) systemctl is-active httpd.service(仅显示是否Active) |
| 显示所有已启动的服务 | chkconfig --list | systemctl list-unit-files systemctl list-units --type=service |
| 启动某服务 | service httpd start | systemctl start httpd.service |
| 停止某服务 | service httpd stop | systemctl stop httpd.service |
| 重启某服务 | service httpd restart | systemctl restart httpd.service |
1、systemctl服务的目录介绍 知道服务的管理是通过 systemd,而 systemd 的配置文件大部分放置于 /usr/lib/systemd/目录内。但是 Red Hat 官方文件指出, 该目录的文件主要是原本软件所提供的设置,建议不要修改!而要修改的位置应该放置于 /etc/systemd/system/目录内。
详情查看:https://wizardforcel.gitbooks.io/vbird-linux-basic-4e/content/150.html
Centos 系统服务脚本目录:
1 | /usr/lib/systemd/ |
有系统(system)和用户(user)之分,如需要开机没有登陆情况下就能运行的程序,存在系统服务(system)里,即:
1 | /usr/lib/systemd/system/ |
反之,用户登录后才能运行的程序,存在用户(user)里,服务以.service结尾。
1 | /usr/lib/systemd/user/ |
2、建立kibana开机服务 1)、建立kibana服务文件
1 | cd /etc/systemd/system/ |
脚本内容:
1 | [Unit] |
注意⚠️: 这里ExecStart、ExecReload、ExecStop的命令还是借助了上文在/etc/init.d目录下配置kibana脚本来实现。 [Service]的启动、重启、停止命令全部要求使用绝对路径 [Install]服务安装的相关设置,可设置为多用户
参数说明: Description:描述服务 After:描述服务类别
[Service]服务运行参数的设置 Type=forking是后台运行的形式 User 服务启动用户 Group 服务启动用户组 ExecStart 为服务的具体运行命令 ExecReload 为重启命令 ExecStop 为停止命令 PrivateTmp=True表示给服务分配独立的临时空间
2)、赋予执行权限
1 | chmod 754 kibana.service |
依照上面的表格,权限组合就是对应权限值求和,如下: 7 = 4 + 2 + 1 读写运行权限 5 = 4 + 1 读和运行权限 4 = 4 只读权限. 这句命令的意思是将filename文件的读写运行权限赋予文件所有者,把读和运行的权限赋予群组用户,把读的权限赋予其他用户。
3)、服务的启动、停止、开机启动
- 查看服务状态
1 | //重新加载某个服务的配置文件,如果新安装了一个服务,归属于 systemctl 管理,要是新服务的服务程序配置文件生效,需重新加载 |

- 启动服务

其中,disabled说明服务还没有开启开机自启动。
开启服务开机启动
1 | systemctl enable kibana.service |
服务状态说明: systemctl status 服务名称
| 状态 | 说明 |
|---|---|
| loaded | 系统服务已经初始化完成,加载过配置 |
| active(running) | 正有一个或多个程序正在系统中执行, vsftpd就是这种模式 |
| atcive(exited) | 僅執行一次就正常結束的服務, 目前並沒有任何程序在系統中執行 |
| atcive(waiting) | 正在執行當中,不過還再等待其他的事件才能继续处理 |
| inactive | 服务关闭 |
| enbaled | 服务开机启动 |
| disabled | 服务开机不自启 |
| static | 服务开机启动项不可被管理 |
| failed | 系统配置错误 |
常用服务文件 1.nginx.service
1 | [Unit] |
2.mysql.service
1 | [Unit] |
4.redis.service
1 | [Unit] |
5.supervisord.service
1 | [Unit] |
总结 本文主要总结了Centos上配置开机自启动的3种方式
方式一:直接在/etc/rc.d/rc.local中添加服务启动命令 方式二:通过chkconfig配置服务自启动 方式三:Centos7通过systemctl enble配置服务开机自启动 ———————————————— 版权声明:本文为CSDN博主「斗者_2013」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/w1014074794/article/details/127297409
这篇笔记整理自我自己的实践记录,如果做法有出入,或者你踩过别的坑,欢迎到留言板一起聊聊。