0%

服务开机自启

CentOS 服务开机自启配置全指南

在 CentOS 系统中,配置服务开机自启是系统管理的重要任务,确保关键服务在系统重启后能自动运行。本文将详细介绍两种主要配置方法:chkconfig 工具和 /etc/rc.local 文件,以及服务的日常管理命令。

使用 chkconfig 管理开机自启

chkconfig 是 CentOS 中传统的服务管理工具,主要用于管理 /etc/init.d/ 目录下的系统服务脚本,支持设置不同运行级别下的自启状态。

chkconfig 基本要求

要使用 chkconfig 管理服务,该服务必须满足:

  • /etc/init.d/ 目录下存在对应的启动脚本
  • 脚本中包含 chkconfig 注释块(指定默认运行级别和优先级)

检查服务脚本是否存在:

1
2
3
ls /etc/init.d/服务名
# 示例:检查 httpd 服务脚本
ls /etc/init.d/httpd

chkconfig 核心命令

添加服务到 chkconfig 管理
1
2
3
chkconfig --add 服务名
# 示例:添加 httpd 服务
chkconfig --add httpd
从 chkconfig 管理中移除服务
1
2
3
chkconfig --del 服务名
# 示例:移除 httpd 服务
chkconfig --del httpd
设置服务开机自启
1
2
3
4
5
6
7
# 默认在 2345 级别开机自启
chkconfig 服务名 on

# 指定运行级别开机自启
chkconfig --level 运行级别 服务名 on
# 示例:在 3 和 5 级别开机自启 httpd
chkconfig --level 35 httpd on
关闭服务开机自启
1
2
3
chkconfig 服务名 off
# 示例:关闭 httpd 开机自启
chkconfig httpd off
查看服务自启状态
1
2
3
4
5
6
7
# 查看所有被 chkconfig 管理的服务
chkconfig --list

# 查看指定服务的自启状态
chkconfig --list 服务名
# 示例:查看 httpd 服务状态
chkconfig --list httpd

运行级别说明

Linux 系统定义了 7 个运行级别(Runlevel),不同级别对应不同的系统状态:

级别 描述
0 关机(Shutdown)
1 单用户模式(Single user mode)- 用于系统维护
2 多用户模式,无网络连接
3 多用户模式,有网络连接(命令行界面)- 服务器常用
4 预留,未使用
5 多用户模式,带图形界面
6 重启(Reboot)

默认常用级别:服务器通常使用级别 3(命令行),桌面系统使用级别 5(图形界面)。

使用 /etc/rc.local 配置开机自启

/etc/rc.local 是一个特殊的脚本文件,系统在启动最后阶段会执行该文件中的命令。这种方法适用于所有类型的服务(包括源码包安装的服务),配置简单直接。

配置方法

  1. 编辑 /etc/rc.local 文件:

    1
    vim /etc/rc.local
  2. 在文件末尾添加需要开机执行的命令(绝对路径):

    1
    2
    3
    4
    5
    # 示例1:启动源码包安装的 Nginx
    /usr/local/nginx/sbin/nginx

    # 示例2:启动自定义脚本
    /home/user/scripts/start_myservice.sh
  3. 确保文件具有可执行权限:

    1
    chmod +x /etc/rc.local

注意事项

  • 必须使用命令的绝对路径,避免因环境变量问题导致执行失败
  • 命令执行顺序与文件中书写顺序一致
  • 若命令需要管理员权限,无需额外添加 sudo(该文件以 root 权限执行)
  • 适用于临时配置或源码包安装的服务(这些服务通常没有 /etc/init.d/ 脚本)

服务的日常管理命令

无论是通过哪种方式配置开机自启,都可以使用以下命令管理服务的运行状态:

使用 service 命令(推荐)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 启动服务
service 服务名 start
# 示例:启动 httpd 服务
service httpd start

# 停止服务
service 服务名 stop
# 示例:停止 httpd 服务
service httpd stop

# 重启服务
service 服务名 restart
# 示例:重启 httpd 服务
service httpd restart

# 查看服务状态
service 服务名 status
# 示例:查看 httpd 服务状态
service httpd status

直接执行服务脚本

/etc/init.d/ 目录下的服务脚本本身也可直接执行:

1
2
3
4
5
6
7
8
9
10
11
# 启动服务
/etc/init.d/服务名 start
# 示例:/etc/init.d/httpd start

# 停止服务
/etc/init.d/服务名 stop
# 示例:/etc/init.d/httpd stop

# 重启服务
/etc/init.d/服务名 restart
# 示例:/etc/init.d/httpd restart

两种方法的对比与选择

方法 优点 缺点 适用场景
chkconfig 支持不同运行级别配置,系统原生支持,管理规范 仅支持有 /etc/init.d/ 脚本的服务 系统自带服务、RPM 包安装的服务
/etc/rc.local 配置简单,支持所有类型服务,包括源码包 不支持按运行级别区分,命令执行顺序需手动控制 源码包安装的服务、临时自启配置、自定义脚本

最佳实践

  • 对于系统自带服务(如 httpd、mysqld),优先使用 chkconfig
  • 对于源码包安装的服务(如自定义编译的 Nginx),使用 /etc/rc.local
  • 无论使用哪种方法,配置后都应重启系统验证:reboot 后检查服务是否正常运行

欢迎关注我的其它发布渠道