chkconfig是sysv init专用服务管理工具,通过维护/etc/rc[0-6].d/符号链接控制运行级自启,需脚本含标准注释头,命令如--list/--add/--level等,systemd系统应优先用systemctl。

Chkconfig 是专为 SysV init 系统设计的服务管理工具,适用于 CentOS 6、RHEL 6 及更早版本。它不直接启动或停止服务,而是通过维护 /etc/rc[0-6].d/ 下的符号链接,控制服务在不同运行级别是否随系统启动。
确认系统是否支持 chkconfig
运行以下命令判断当前环境是否适用:
echo $RUNLEVEL 或 runlevel —— 若输出为数字(如 N 3),且 ps -p 1 -o comm= 返回 init,说明是 SysV 环境,chkconfig 可用。
若返回 systemd,则系统已升级,chkconfig 实际被重定向(除非加 --no-redirect),应优先使用 systemctl。
服务脚本必须满足前提条件
要被 chkconfig 管理,/etc/init.d/ 下的服务脚本需包含标准注释头,例如:
# chkconfig: 35 80 20
# description: Starts and stops the nginx web server.
其中 35 表示默认在运行级别 3 和 5 启用,80 是启动顺序编号,20 是停止顺序编号。缺少该注释会导致 --add 失败。
常用操作与对应命令
● 查看所有服务在各运行级的状态:
chkconfig --list
只查某服务(如 sshd):
chkconfig --list sshd
● 将新脚本纳入管理(如刚放入 /etc/init.d/myapp):
chkconfig --add myapp
● 设置服务在运行级别 3、4、5 自动启动:
chkconfig --level 345 myapp on
● 禁用该服务在所有运行级的自启动:
chkconfig myapp off(等价于 --level 0123456 myapp off)
● 从 chkconfig 管理中彻底移除(删除所有 rc.d 符号链接):
chkconfig --del myapp
注意事项与常见问题
● 修改后不会立即生效:需重启系统,或手动执行 service myapp start 启动服务本身。
● 运行级别 4 通常未定义,慎用于生产环境。
● on/off 默认仅影响级别 2、3、4、5;若需控制级别 1 或 6,必须显式指定 --level。
● 若提示 service xxx does not support chkconfig,说明脚本缺少必要注释头,需补全再 --add。











