补充说明
update-rc.d 是 Debian 系发行版(Debian、Ubuntu 等)中用于维护 /etc/rc?.d/ 目录下符号链接的脚本,属于 sysv-rc 包。它根据 /etc/init.d/ 中的 SysV 脚本名,在对应运行级别目录中创建 S(启动)或 K(停止)开头的链接。
在 systemd 系统上,该命令仍可用于兼容旧式 init 脚本,但服务是否随开机启动实际由 systemd 单元决定,因此应优先使用 systemctl enable 与 systemctl disable。update-rc.d 只修改链接,不启动或停止服务本身。
执行前应确认 /etc/init.d/<name> 存在且可执行。remove 只删除 rc 目录中的链接,不会删除 init 脚本。批量改动前可以先用 -n 预览将要执行的动作。
语法
update-rc.d [-n] [-f] name remove
update-rc.d name defaults [NN | SS KK]
update-rc.d name start|stop NN runlevel [runlevel] ... .
选项
-n:只显示将要执行的操作,不实际修改文件系统。-f:即使/etc/init.d/name不存在,也强制删除链接。-v:输出详细执行过程。defaults:依据脚本头部的Default-Start、Default-Stop创建链接;未声明时通常为 2 3 4 5 启动、0 1 6 停止。start NN runlevel .:在指定运行级别以序号NN创建启动链接。stop NN runlevel .:在指定运行级别创建停止链接。
实例
# 按脚本声明的默认运行级别启用服务
sudo update-rc.d nginx defaults
# 指定启动优先级 20,在 2/3/4/5 级别启动,在 0/1/6 级别停止
sudo update-rc.d nginx start 20 2 3 4 5 . stop 20 0 1 6 .
# 删除某服务的所有 rc?.d 链接,但保留 /etc/init.d 脚本
sudo update-rc.d nginx remove
# 先预览删除操作,不实际执行
sudo update-rc.d -n nginx remove
# 查看生成的链接
ls -l /etc/rc2.d/ | grep nginx