update-rc.d 概览和系统启动 计算机在启动的时候会自动执行一些脚本,用于启动一些应用程序服务,update-rc.d 是管理这些脚本的常用命令之一。 首先这是 LinuxQuestions 中对 update-rc.d 的定义: update-rc.d is the Debian utility to install and remove System-V style init script links. Other distributions (such as Red Hat) use chkconfig. With update-rc.d,you can schedule tasks to be started when you boot your computer,for example the ssh service. 从上文可知: update-rc.d 是一个 Ubuntu 和 Debian 下的工具程序,用来添加和移除 System-V 类型的启动脚本。 因此 /etc/init.d 目录就是系统的启动脚本所在的目录,其中的每一个文件都是一个启动脚本,都代表了某一类应用程序服务。除非我们要手动编写启动脚本,否则我们不需要修改这个目录下的文件,在安装一些需要开机启动的应用程序的时候对应的脚本会自动被添加进去。 而系统还有另外一类目录叫 /etc/rcX.d,X 代表了 Linux 系统的运行级别。总共有 7 种运行级别,因此就有 7 个 /etc/rcX.d 目录(例如 /etc/rc5.d、/etc/rc0.d)。 /etc/rcX.d 目录下都是一些符号链接文件,这些链接文件都指向 /etc/init.d 目录下的脚本文件,命名规则为 K+NN+服务名或 S+NN+服务名,其中 NN 为两位数字。系统会根据指定的运行级别进入对应的 /etc/rcX.d 目录,并按照文件名顺序检索目录下的链接文件。 所以,到这而 Linux 启动项的内部实现就大致明晰了:如果在某一运行级别下,对应的 /etc/rcX.d 下的链接文件决定了启动时系统对于这些脚本所采取的行动。换句话说,修改 /etc/rcX.d 下的文件可完成系统启动项的配置。但是这样的方法过于繁琐,所以才有了 update-rc.d 命令,它通过直接检索脚本名称和相应的参数来快速管理这些启动脚本。 使用 update-rc.d 命令需要指定脚本名称和一些参数,它的格式看起来是这样的(需要在 root 权限下): update-rc.d [-n] [-f] <basename> remove 其中: disable|enable 代表脚本还在 /etc/init.d 中,并设置当前状态是手动启动还是自动启动。 例如,添加一个新的启动脚本 sample_init_script,并且指定为默认启动顺序、默认运行级别(还记得前面说的吗,首先要有实际的文件存在于 /etc/init.d,即若文件 /etc/init.d/sample_init_script 不存在,则该命令不会执行): $ update-rc.d sample_init_script defaults 上一条命令等效于(中间是一个英文句点符号): $ update-rc.d sample_init_script start 20 2 3 4 5 . stop 20 0 1 6 安装一个启动脚本 sample_init_script,指定默认运行级别,但启动顺序为 50: $ update-rc.d sample_init_script defaults 50 安装两个启动脚本 A、B,让 A 先于 B 启动,后于 B 停止: $ update-rc.d A 10 40 删除一个启动脚本 sample_init_script,如果脚本不存在则直接跳过: $ update-rc.d -f sample_init_script remove 这一条命令实际上做的就是一一删除所有位于 /etc/rcX.d 目录下指向 /etc/init.d 中 sample_init_script 的链接(可能存在多个链接文件),update-rc.d 只不过简化了这一步骤。 $ update-rc.d -f apache2 remove update-rc.d MysqL enable update-rc.d MysqL disable
update-rc.d apache2 enable update-rc.d apache2 disable 通过update-rc.d来管理Ubuntu系统的自动启动程序:@L_502_1@ Ubuntu系统Update-rc.d命令:http://www.linuxdiyf.com/linux/906.html |