update-rc.d是debian中管理sysv init服务开机自启的工具,通过在/etc/rc?.d/下创建指向/etc/init.d/脚本的s/k链接实现;脚本须放对位置、含lsb头注释、有可执行权限,常用命令包括defaults、start/stop指定运行级与顺序、remove移除链接。

在 Debian 系统中,update-rc.d 是管理 SysV init 风格服务开机自启的核心工具。它不直接运行脚本,而是按运行级别(runlevel)在 /etc/rc?.d/ 目录下创建或删除指向 /etc/init.d/ 脚本的符号链接。关键在于:脚本必须先放对位置、写对头注释,再用命令注册。
脚本必须放在 /etc/init.d/ 并带 LSB 头注释
不能把普通 shell 脚本直接丢进去就完事。它需要标准结构:
- 第一行必须是
#!/bin/sh或#!/bin/bash - 紧接着是 LSB(Linux Standard Base)注释块,包含
Provides、Required-Start、Default-Start等字段 -
Default-Start: 2 3 4 5表示默认在多用户模式下启动(Debian 默认运行级为 2) - 脚本需有可执行权限:
sudo chmod +x /etc/init.d/myscript
常用 update-rc.d 命令及含义
所有操作均需 root 权限。常见用法如下:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
sudo update-rc.d myscript defaults:按默认规则生成链接——启动时 S20myscript(20 是默认优先级),关机/切换单用户时 K20myscript -
sudo update-rc.d myscript defaults 90 10:启动优先级设为 90(较晚启动),停止优先级设为 10(较早停止) -
sudo update-rc.d myscript start 20 2 3 4 5 . stop 80 0 1 6 .:精细控制——仅在 runlevel 2–5 启动(S20),在 0、1、6 关停(K80) -
sudo update-rc.d myscript remove:安全移除所有符号链接(保留脚本本身) -
sudo update-rc.d -f myscript remove:强制移除,即使脚本已不存在也执行清理
验证和调试技巧
注册后别急着重启,先检查是否生效:
- 查看链接是否生成:
ls -l /etc/rc?.d/*myscript,应看到类似/etc/rc2.d/S20myscript -> /etc/init.d/myscript - 手动触发启动测试:
sudo /etc/init.d/myscript start,确认无报错 - 检查日志输出是否符合预期(建议脚本内重定向到
/var/log/或/tmp/) - 注意环境差异:开机时 PATH 较窄,脚本中所有命令尽量用绝对路径(如
/usr/bin/python3而非python3)
注意它不是万能的,也不推荐新项目使用
Debian 11/12 默认使用 systemd,update-rc.d 仅用于兼容 SysV 脚本。它的局限性很明确:
- 无法处理服务依赖(比如“等 MySQL 启动后再跑我的脚本”)
- 不支持并行启动,所有脚本线性执行,容易拖慢开机
- 没有状态监控、自动重启、日志整合等现代功能
- 新写的自定义任务,优先考虑
systemctl enable+.service文件










