跳转到内容

Ict-创新/LPI/101.3

来自维基教科书,开放的书籍,开放的世界

101.3 运行级别,重启和关闭系统

[编辑 | 编辑源代码]

候选人应该能够管理系统的运行级别。

此目标包括更改为单用户模式、关闭或重启系统。候选人应该能够在切换运行级别之前提醒用户并正确终止进程。此目标还包括设置默认运行级别。


关键知识领域

  • 设置默认运行级别。
  • 在运行级别之间切换,包括单用户模式。
  • 从命令行关闭和重启。
  • 在切换运行级别或其他重大系统事件之前提醒用户。
  • 正确终止进程。

传统上,Linux 有 7 个运行级别,编号从 0 到 6。运行级别定义了计算机启动后的状态。除了运行级别 0 和 6,运行级别编号分配给特定配置的不同之处在于发行版与发行版之间的差异。运行级别 0 用于停止系统,运行级别 6 用于重启系统。其余运行级别通常分配给以下配置

  1. 单用户模式
  2. 多用户,文本模式,无服务器
  3. 多用户,文本模式,服务器
  4. 多用户,GUI 模式,无服务器
  5. 多用户,GUI 模式,服务器。

以下是 Redhat 服务器的运行级别。


# 默认运行级别。RHS 使用的运行级别是

# 0 - 停止(不要将 initdefault 设置为此)

# 1 - 单用户模式

# 2 - 多用户,无 NFS(与 3 相同,如果您没有网络)

# 3 - 全部多用户模式

# 4 - 未使用

# 5 - X11

为不同运行级别配置哪些服务和硬件是由为每个级别配置的一组脚本决定的。特定于运行级别的脚本存储在 /etc/rc.d/rc?.d、/etc/init.d/rc?.d 或 /etc/rc?.d 或类似位置,其中 ? 是运行级别的数字。

在这些目录中的每一个目录下,都有一些符号链接指向一组通用的脚本,这些脚本位于 /etc/rc.d、/etc/init.d 或 /etc/rc.d/init.d(注意路径中缺少数字),所有运行级别都使用这些脚本。

符号链接的名称以一个 *S* 或 *K*、一个数字,然后是脚本控制的服务的名称。*S* 意味着这是一个在进入运行级别时使用 'start' 运行的脚本,而 *K* 代表在退出运行级别时运行的脚本。数字指示脚本运行的顺序,而名称指示服务。脚本的顺序由系统要求决定,例如,网络需要在邮件或 Web 服务器启动之前配置。如果要对符号链接进行长列表,您会发现它们指向同一个脚本,它们只是在 init 向脚本传递的参数不同。'start' 用于启动它,'stop' 用于停止它。

启动脚本只是在运行时调用适当应用程序的 bash 脚本。这些脚本采用一组标准参数,即:start、stop、restart 和 reload。一些编写不当的脚本可能没有实现所有参数。

配置运行级别

[编辑 | 编辑源代码]

您可以通过更改相应 rc 目录中的符号链接来添加或删除运行级别中的服务,但存在各种工具来简化这些脚本的管理。

在 Debian 系统及其衍生系统中,您可以使用 update-rc.d 或 rc-update 脚本,传入您想要添加或删除的服务的名称以及适当的参数。

示例

# update-rc.d disable 3 apache2

将从运行级别 3 中删除 apache2 服务

# update-rc.d enable 3 apache2

将 apache 添加到运行级别 3。

对于基于 rpm 的发行版,命令 chkconfig 执行相同的事情。

示例

# chkconfig -del httpd

将从所有配置的运行级别中删除 Apache Web 服务器

# chkconfig -add httpd

将 Apache Web 服务器添加到所有默认运行级别,

# chkconfig -level 3 httpd on

将 Apache 添加到运行级别 3


除了添加和删除这些服务,chkconfig 还可以使用 chkconfig –list apache2 列出为其配置了服务的运行级别

更改运行级别

[编辑 | 编辑源代码]

可以通过使用运行级别编号调用 init 二进制文件来更改运行级别;例如,init 6 将重启机器,而 init 0 将停止或关闭机器。init 的另一种选择是 telinit。Init 和 telinit 执行相同的函数,只是它们接受的参数不同。

Teleinit/init 通常用于更改计算机的状态而无需重启它。有时需要将计算机的状态更改为单用户模式以进行系统维护。这可以使用 init 1 完成。在更改运行级别之前,最好让当前登录的用户知道。这可以使用 wall 命令完成。例如,wall “用户将在 5 分钟内注销...” 会将文本消息发送给所有登录的用户。

如果您需要确定当前的运行级别,您可以运行命令 “runlevel”。要更改运行级别,请使用上面说明的 init 命令。运行级别也可以通过以下命令更改

  • halt - 停止系统,
  • reboot - 重启系统,
  • shutdown - 将在指定时间或指定时间间隔后停止系统。该命令也可以用来安排重启。shutdown 命令也可以接收在系统控制台上登录的任何用户都可以看到的一条文本消息。例如
  • shutdown -h now - 将立即停止系统,
  • shutdown -h +10 - 系统将在 10 分钟后停止 - 将在 10 分钟后停止系统,
  • shutdown -r 14:30 - 系统将在 14:30 重启
  • shutdown -c - 将取消任何已安排的关闭或重启

启动和停止服务

[编辑 | 编辑源代码]

您也可以在运行时停止和启动服务。在基于 Debian 的系统上,可以通过使用适当的参数直接调用启动脚本,即 start 用于启动服务,stop 用于停止服务。

在 Ubuntu 上,可以运行

# /etc/init.d/apache2 stop

# /etc/init.d/apache2 start

启动或停止 Apache 服务器

在基于 Red Hat 的系统上,可以使用 service 命令来停止和启动服务。

# service httpd start

# service httpd stop

启动或停止 Apache 服务器

这些命令也可以用来重新加载服务配置文件,以使服务实现可能已进行的任何配置更改。例如

# /etc/init.d/apache2 reload

# service http reload

需要注意的是,并非所有服务都支持重新加载配置文件的功能。



使用的文件、术语和实用程序

  • /etc/inittab
  • shutdown
  • init
  • /etc/init.d
  • telinit


上一章 | 下一章

华夏公益教科书