Update-rc.d 命令用法详解

本文介绍了Ubuntu系统中update-rc.d命令的使用方法,包括如何管理不同运行级别的启动脚本,以及如何调整启动顺序。文章还概述了Linux系统的启动过程和运行级别的概念。

Ubuntu或者Debian系统中update-rc.d命令,是用来更新系统启动项的脚本。这些脚本的链接位于/etc/rcN.d/目录,对应脚本位于/etc/init.d/目录。在了解update-rc.d命令之前,你需要知道的是有关Linux 系统主要启动步骤,以及Ubuntu中运行级别的知识。

一、Linux 系统主要启动步骤

  1. 读取 MBR 的信息,启动 Boot Manager。
  2. 加载系统内核,启动 init 进程, init 进程是 Linux 的根进程,所有的系统进程都是它的子进程。
  3. init 进程读取 /etc/inittab 文件中的信息,并进入预设的运行级别。通常情况下 /etc/rcS.d/ 目录下的启动脚本首先被执行,然后是/etc/rcN.d/ 目录。
  4. 根据 /etc/rcS.d/ 文件夹中对应的脚本启动 Xwindow 服务器 xorg,Xwindow 为 Linux 下的图形用户界面系统。
  5. 启动登录管理器,等待用户登录。

二、运行级别

Ubuntu中的运行级别

  • 0(关闭系统)
  • 1(单用户模式,只允许root用户对系统进行维护。)
  • 2 到 5(多用户模式,其中3为字符界面,5为图形界面。)
  • 6(重启系统)
切换运行级别
1
2
init [0123456Ss]
例如:init 0 命令关机; init 6 命令重新启动
启动项管理工具
1
2
sudo install sysv-rc-conf //或者使用带gui的工具bum
sudo sysv-rc-conf

三、update-rc.d命令详解

从所有的运行级别中删除指定启动项
1
update-rc.d -fbasename> remove
按指定顺序、在指定运行级别中启动或关闭
1
update-rc.d <basename> start|stop <order> <runlevels>
1
实例:update-rc.d apachectl start 20 2 3 4 5 . stop 20 0 1 6 .

解析:表示在2、3、4、5这五个运行级别中,由小到大,第20个开始运行apachectl;在 0 1 6这3个运行级别中,第20个关闭apachectl。这是合并起来的写法,注意它有2个点号,效果等于下面方法:

1
update-rc.d apachectl defaults
A启动后B才能启动,B关闭后A才关闭
1
2
update-rc.d A defaults 80 20
update-rc.d B defaults 90 10
启动和关闭顺序为90,级别默认
1
update-rc.d <basename> defaults 90
### init.d的作用 `/etc/init.d` 是 Linux 系统中的一个重要目录,它包含了一系列用于启动、停止、重启和管理系统服务的脚本文件。这些脚本通常被称为 init 脚本或服务脚本。`/etc/init.d` 目录实际上是 `/etc/rc.d/init.d` 的软链接,这种设计是为了简化路径并提高可读性。这些脚本类似于 Windows 中的注册表项,在系统启动时,某些指定的脚本会被自动执行以初始化系统服务。 在 Linux 系统引导过程中,init 程序会根据运行级别(runlevel)来决定哪些服务需要启动或停止。运行级别是一个从 0 到 6 的数字,每个级别对应不同的系统状态。例如,运行级别 3 是多用户模式,而运行级别 5 是图形界面模式。系统启动时,init 程序会读取 `/etc/inittab` 文件,并根据其中的配置加载相应的服务脚本。这些服务脚本主要位于 `/etc/rc.d/init.d` 目录下,并通过符号链接与 `/etc/rc.d/rcn.d` 目录(其中 `n` 表示运行级别)相关联。例如,`/etc/rc.d/rc2.d/S10network` 是指向 `/etc/rc.d/init.d/network` 脚本的符号链接,表示在网络运行级别 2 下启动网络服务。 ### init.d的使用方法 要使用 `/etc/init.d` 中的服务脚本,通常可以通过命令行调用这些脚本来执行操作,如启动、停止、重启或检查服务的状态。基本的命令格式如下: ```bash /etc/init.d/<service_name> <action> ``` 其中 `<service_name>` 是要操作的服务名称,而 `<action>` 可以是 `start`、`stop`、`restart` 或 `status` 等操作。 例如,如果有一个名为 `example` 的服务脚本位于 `/etc/init.d/` 目录下,则可以使用以下命令来控制该服务: - 启动服务: ```bash /etc/init.d/example start ``` - 停止服务: ```bash /etc/init.d/example stop ``` - 重启服务: ```bash /etc/init.d/example restart ``` - 检查服务状态: ```bash /etc/init.d/example status ``` 此外,还可以通过 `chkconfig` 或 `update-rc.d` 工具来管理服务在不同运行级别下的启动和停止状态。这些工具可以帮助用户更方便地配置服务在系统启动时是否自动运行。 ### 示例 下面是一个简单的 `/etc/init.d` 脚本示例,用于启动一个名为 `example` 的自定义服务: ```bash #!/bin/bash # description: Example service script case "$1" in start) echo "Starting example service..." # 在这里添加启动服务的命令 ;; stop) echo "Stopping example service..." # 在这里添加停止服务的命令 ;; restart) $0 stop $0 start ;; status) echo "Checking status of example service..." # 在这里添加检查服务状态的命令 ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac exit 0 ``` 保存此脚本为 `/etc/init.d/example` 并赋予其可执行权限: ```bash chmod +x /etc/init.d/example ``` 为了使该服务在特定运行级别下自动启动,可以创建相应的符号链接到 `/etc/rc.d/rcn.d` 目录中。例如,在运行级别 3 下启动该服务,可以使用以下命令: ```bash ln -s /etc/init.d/example /etc/rc.d/rc3.d/S99example ``` 这样,当系统进入运行级别 3 时,`example` 服务将在其他服务之后启动(S99 表示启动顺序)。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值