/etc/init.d 是 sysv init 系统的服务脚本目录,需将可执行脚本(含正确解释器和 lsb/chkconfig 注释头)放入该目录,再用 chkconfig(rhel/centos 6 及更早)或 update-rc.d(debian/ubuntu)注册开机自启,并可通过 service 命令或直接调用脚本管理启停。

/etc/init.d 是 SysV init 系统中管理服务脚本的核心目录,存放着控制服务启停的 Shell 脚本。它的管理围绕脚本放置、权限设置、手动执行和开机自启四个环节展开,不同发行版操作略有差异,但逻辑一致。
脚本怎么放进去才有效
脚本必须放在 /etc/init.d/ 目录下(实际是 /etc/rc.d/init.d 的软链接),且需满足以下条件:
- 文件有可执行权限:运行 chmod +x /etc/init.d/myscript
- 开头要有正确的解释器声明,例如 #!/bin/bash 或 #!/bin/sh
- 若要用 chkconfig 或 update-rc.d 管理,建议加上 LSB 注释头(Debian/Ubuntu)或 # chkconfig 行(RHEL/CentOS),否则部分工具会拒绝识别
怎么手动启动或停止服务
直接调用脚本是最基础的方式,参数统一为 start、stop、restart 等:
- /etc/init.d/nginx start
- /etc/init.d/mysql stop
- 也可用 service nginx restart —— 这只是对上述命令的封装,本质仍调用 /etc/init.d/ 下对应脚本
怎么让脚本开机自动运行
不能只放脚本,必须注册进系统启动流程。方法取决于发行版:
-
RHEL/CentOS 6 及更早:用 chkconfig
chkconfig --add myscript
chkconfig myscript on(默认启用级别 2345) -
Debian/Ubuntu(SysV 环境):用 update-rc.d
update-rc.d myscript defaults(生成 S/K 链接到 /etc/rc?.d/)
若提示路径错误,先进入 /etc/init.d 目录再执行命令 - 通用备选法:编辑 /etc/rc.local,在 exit 0 前添加 /etc/init.d/myscript start,并确保该文件本身有执行权限(chmod +x /etc/rc.local)
怎么查看和验证状态
注册后不是一劳永逸,需确认是否生效:
- 查注册状态:chkconfig --list | grep myscript(RHEL)或 ls /etc/rc?.d/*myscript(Debian)
- 查当前运行状态:ps aux | grep myscript 或看进程是否存在
- 模拟重启测试:可先运行 /etc/init.d/myscript stop && /etc/init.d/myscript start 确保脚本逻辑无误











