update-rc.d 是 debian/ubuntu sysv init 系统中管理服务开机自启的工具,通过在 /etc/rc?.d/ 创建符号链接控制运行级别启停;需确保脚本位于 /etc/init.d/、有 lsb 头、可执行权限;用 defaults 启用或 remove 禁用,-n 可预览。

在基于 SysV init 的 Debian/Ubuntu 系统(如 Ubuntu 14.04、16.04,或部分旧版衍生系统)中,update-rc.d 是注册 /etc/init.d/ 类型服务为开机自启的标准工具。它通过在 /etc/rc?.d/ 目录下创建符号链接来控制服务在各运行级别下的启停行为。
确保服务脚本已就位且合规
脚本必须放在 /etc/init.d/ 下,名称不含扩展名(如 myapp 而非 myapp.sh),并满足基本要求:
- 以
#!/bin/bash或#!/bin/sh开头 - 包含可执行的
start、stop(推荐还有restart和status)分支 - 建议添加标准 LSB 注释头(
### BEGIN INIT INFO),明确依赖和默认运行级别,便于update-rc.d正确解析 - 赋予执行权限:
sudo chmod +x /etc/init.d/myapp
使用 update-rc.d 启用开机自启
最常用的是 defaults 模式,适用于大多数独立服务:
-
sudo update-rc.d myapp defaults:在运行级别 2–5 启动,在 0、1、6 停止;启动优先级 20,停止优先级 20 -
sudo update-rc.d myapp defaults 90 10:启动优先级设为 90(较晚启动),停止优先级设为 10(较早停止),适合依赖网络或数据库的服务
执行后,你能在 /etc/rc2.d/、/etc/rc3.d/ 等目录看到类似 S90myapp(启动)和 K10myapp(停止)的符号链接。
禁用或移除自启配置
如果要取消开机启动,不要手动删链接,应使用官方方式:
-
sudo update-rc.d myapp remove:删除所有自动生成的符号链接 -
sudo update-rc.d -f myapp remove:强制移除(当服务已被卸载但残留链接时使用)
注意:remove 不会删除原始脚本 /etc/init.d/myapp,仅解除启动关联。
验证与调试
配置完成后,可通过以下方式确认效果:
- 查看当前状态:
sudo update-rc.d -n myapp defaults(加-n参数预览,不实际写入) - 列出所有链接:
ls -l /etc/rc?.d/*myapp - 手动测试启停:
sudo service myapp start和sudo service myapp stop - 检查日志或自定义输出(如脚本中写入
/var/log/myapp.log),重启后确认是否执行











