- 浏览: 142404 次
文章分类
最新评论
传统的linux中定义了七个运行级,分别如下:
1、0级是完全关闭系统的级别。
2、1级或S级代表单用户模式,会关闭所有的多用户和远程登录进程。
3、2--5级是多用户级别。
4、6级是“多重引导”级别。
其中,0级和6级是不能让系统停留的,进入这两个级别的效果是关闭系统或者重新引导系统。在多数系统上,正常的多用户运行级别是2或3级,运行级5经常用于X Windows的登录进程,运行级4很少使用,运行级1和S的定义在每种系统上是不同的。
每个运行级下运行的服务是不一样的,/etc/inittab 规定了系统进入到每一级别时要运行的命令。在机器引导时,init 从运行级0开始,逐级往上运行到在 /etc/inittab 中所设置的默认运行级别。当机器关闭时,又以相反的顺序执行同样的处理过程。
不过为了更灵活,linux通常采用“改变运行级”脚本的形式,由 inittab 来调用。这一脚本接下来执行位于与运行级有关的目录下的其它脚本,从而把系统带入到新的状态。
启动脚本的主拷贝位于 /etc/init.d/ 目录下,每个脚本负责一个守护进程或者系统的某个特定方面。为方便管理,这些脚本都可接受参数 start 和 stop,多数还接受 restart,以便能快速启动或停止对应的服务。例如下面这个可以启动、停止或重新启动 sshd 服务的启动脚本:
尽管 /etc/init.d/ 中的脚本能启动和停止各个服务,但是由init运行的主控制脚本需要知道其它一些信息,这些信息说明了要进入任何指定的运行级别需运行哪些脚本。为简化操作,当主脚本把系统引入到一个新的运行级别时,它不是直接在 init.d 目录下找,而是查找叫做 /etc/rcLEVEL.d/ 的目录,此处的 LEVEL 就是要进入的运行级别编号(例如 rc0.d、rc1.d 等)。这些 /etc/rcLEVEL.d/ 目录包含了链接到 /etc/init.d/ 目录中的服务的符号链接,它们的名称都以S或K开头,后跟一个数字以及该脚本所控制的服务名(例如,S55sshd等)。当init从低的运行级别向高的运行级别过渡时,它按照数字递增的顺序运行所有以S(表示start)开头的、带有start参数的脚本;当init从高的运行级别向低的运行级别过渡时,它按照数字递减的顺序运行所有以K(表示kill)开头的、带有stop参数的脚本。
这一机制让系统管理员可以细粒度地控制启动服务的顺序。所以在加入新服务时,一定要考虑到这种依赖关系。要告诉系统什么时候启动一个守护进程,我们必须在适当的目录下创建符号链接。例如,要告诉系统在运行级2期间启动CUPS并在系统关闭前妥善地停止这个守护进程,那么创建下面这一对链接就够了(有些系统以不同的方式处理系统关闭和重新引导,所以可能需要在 /etc/rc6.d/ 目录中也放一个符号链接,以确保系统重新引导时,该守护进程能被正确关闭):
# ln -s /etc/init.d/cups /etc/rc2.d/S80cups
# ln -s /etc/init.d/cups /etc/rc2.d/K80cups
对于 Red Hat 和 Fedora 来说,init 都把运行级作为参数来调用脚本 /etc/rc.d/rc。/etc/rc.d/rc 一般运行在“正常”模式下,此时它只做它自己的事情。它也可运行在“确认”模式下,此时它在运行每个单独的启动脚本以前会询问用户。Red Hat 和 Fedora 有一个 chkconfig 命令来帮助用户管理服务。该命令可以在系统中增删启动脚本,也可以管理这些脚本执行的优先级,还能列出一个脚本目前为哪些运行级做了配置。Red Hat 还有一个 rc.lacal 脚本,是作为启动过程的一部分而运行的最后一个脚本,用户可以向其中添加自己定制的启动内容。Red Hat 引导过程的大多数配置应该通过操作 /etc/sysconfig 中的配置文件来完成。下表总结了 /etc/sysconfig 目录中一些项的功能:
参考资料:《linux系统管理技术手册》第二章--引导和关机。
1、0级是完全关闭系统的级别。
2、1级或S级代表单用户模式,会关闭所有的多用户和远程登录进程。
3、2--5级是多用户级别。
4、6级是“多重引导”级别。
其中,0级和6级是不能让系统停留的,进入这两个级别的效果是关闭系统或者重新引导系统。在多数系统上,正常的多用户运行级别是2或3级,运行级5经常用于X Windows的登录进程,运行级4很少使用,运行级1和S的定义在每种系统上是不同的。
每个运行级下运行的服务是不一样的,/etc/inittab 规定了系统进入到每一级别时要运行的命令。在机器引导时,init 从运行级0开始,逐级往上运行到在 /etc/inittab 中所设置的默认运行级别。当机器关闭时,又以相反的顺序执行同样的处理过程。
不过为了更灵活,linux通常采用“改变运行级”脚本的形式,由 inittab 来调用。这一脚本接下来执行位于与运行级有关的目录下的其它脚本,从而把系统带入到新的状态。
启动脚本的主拷贝位于 /etc/init.d/ 目录下,每个脚本负责一个守护进程或者系统的某个特定方面。为方便管理,这些脚本都可接受参数 start 和 stop,多数还接受 restart,以便能快速启动或停止对应的服务。例如下面这个可以启动、停止或重新启动 sshd 服务的启动脚本:
#!/bin/sh test -f /usr/bin/sshd || exit 0 case "$1" in start) echo "Starting sshd." /usr/sbin/sshd ;; stop) echo "Stopping sshd." kill `cat /var/run/sshd.pid` ;; restart) echo "Stopping sshd." kill `cat /var/run/sshd.pid` echo "Starting sshd" /usr/sbin/sshd ;; *) echo "Usage: /etc/init.d/sshd start|stop|restart" exit 1 ;; esac
尽管 /etc/init.d/ 中的脚本能启动和停止各个服务,但是由init运行的主控制脚本需要知道其它一些信息,这些信息说明了要进入任何指定的运行级别需运行哪些脚本。为简化操作,当主脚本把系统引入到一个新的运行级别时,它不是直接在 init.d 目录下找,而是查找叫做 /etc/rcLEVEL.d/ 的目录,此处的 LEVEL 就是要进入的运行级别编号(例如 rc0.d、rc1.d 等)。这些 /etc/rcLEVEL.d/ 目录包含了链接到 /etc/init.d/ 目录中的服务的符号链接,它们的名称都以S或K开头,后跟一个数字以及该脚本所控制的服务名(例如,S55sshd等)。当init从低的运行级别向高的运行级别过渡时,它按照数字递增的顺序运行所有以S(表示start)开头的、带有start参数的脚本;当init从高的运行级别向低的运行级别过渡时,它按照数字递减的顺序运行所有以K(表示kill)开头的、带有stop参数的脚本。
这一机制让系统管理员可以细粒度地控制启动服务的顺序。所以在加入新服务时,一定要考虑到这种依赖关系。要告诉系统什么时候启动一个守护进程,我们必须在适当的目录下创建符号链接。例如,要告诉系统在运行级2期间启动CUPS并在系统关闭前妥善地停止这个守护进程,那么创建下面这一对链接就够了(有些系统以不同的方式处理系统关闭和重新引导,所以可能需要在 /etc/rc6.d/ 目录中也放一个符号链接,以确保系统重新引导时,该守护进程能被正确关闭):
# ln -s /etc/init.d/cups /etc/rc2.d/S80cups
# ln -s /etc/init.d/cups /etc/rc2.d/K80cups
对于 Red Hat 和 Fedora 来说,init 都把运行级作为参数来调用脚本 /etc/rc.d/rc。/etc/rc.d/rc 一般运行在“正常”模式下,此时它只做它自己的事情。它也可运行在“确认”模式下,此时它在运行每个单独的启动脚本以前会询问用户。Red Hat 和 Fedora 有一个 chkconfig 命令来帮助用户管理服务。该命令可以在系统中增删启动脚本,也可以管理这些脚本执行的优先级,还能列出一个脚本目前为哪些运行级做了配置。Red Hat 还有一个 rc.lacal 脚本,是作为启动过程的一部分而运行的最后一个脚本,用户可以向其中添加自己定制的启动内容。Red Hat 引导过程的大多数配置应该通过操作 /etc/sysconfig 中的配置文件来完成。下表总结了 /etc/sysconfig 目录中一些项的功能:
文件/目录 | 功能或内容 |
clock | 指定系统有的时钟类型(几乎总是 UTC) |
console | 一个总是为空的神秘目录 |
httpd | 决定使用 Apache 的何种处理模式 |
hwconf | 包含系统硬件的所有信息,由 Kudzu 使用 |
i18n | 包含系统的本地设置(日期格式、语言等) |
init | 配置来自启动脚本的消息的显示方式 |
keyboard | 设置键盘类型(使用 us 代表标准的 101 键美国键盘) |
mouse | 设置鼠标类型,由 X 和 gpm 使用 |
network | 设置全局的网络参数(主机名称、网关、转发机制等) |
network-scripts | 包含补充脚本和网络配置文件的目录 |
sendmail | 为 sendmail 设置选项 |
参考资料:《linux系统管理技术手册》第二章--引导和关机。
发表评论
-
浮点运算指令
2019-05-22 23:13 1575上一节介绍了浮点数与各种数值类型之间的相互转换 ... -
浮点数类型转换指令
2019-05-15 22:37 1710在浮点寄存 ... -
浮点寄存器概述
2019-05-14 22:31 2590本文介绍的浮点寄存器是基于 AVX2(Adva ... -
汇编指令之跳转指令
2019-04-15 00:21 4799正常执行的情况下,指令会按照顺序一条条地执行, ... -
汇编指令之条件码
2019-04-08 21:05 2360在系统底层,除了整数寄存器,CPU 还维护着一 ... -
汇编指令之算术和逻辑操作指令
2019-03-28 22:16 1383下表是 x86-64 ... -
汇编指令之数据传送指令
2019-03-25 21:28 1289在x86-64 中的 ... -
x86-64 中的寄存器与汇编操作数杂述
2019-03-20 21:45 993Intel 中常用 ... -
hello 程序执行背后的故事
2018-12-26 21:48 608源文件 hello. ... -
unix限制
2017-04-04 16:08 579UNIX系统实现定义了很多幻数和常量,其中有很 ... -
linux引导加载程序--GRUB
2017-04-04 04:22 625linux世界里有两种 ... -
存储器映射
2016-06-13 00:12 553注:本文摘自《深入理解计算机操作系统》第九章--虚拟存 ... -
虚拟存储器对存储器管理的作用
2016-06-10 16:00 696注:本文中的大部分内容均是摘录自《深入理解计算机系统》一书,权 ... -
信号处理问题
2016-06-03 08:31 562注:本文摘自《深入理解计算机系统》第8章 --- 异常控制流。 ... -
僵尸进程
2016-05-23 23:57 361在解释僵尸进程的概念之前,我们得先了解这样的一个事实: 一个进 ... -
程序优化之存储器别名使用
2016-05-20 08:55 797说明:本文示例摘自《深入理解计算机系统》第五章----优化程序 ... -
条件变量基本概念与原理(转载)
2016-05-20 08:54 1580对于条件变量,我一直感到很困惑,搞不清其与互斥锁到底有啥区别, ... -
CPU与磁盘的交互过程
2016-05-19 09:05 1840对于计算机系统底层技术,想必很多人都和我一样不太了解,最近在学 ... -
存储器层次结构中基本的缓存原理
2016-05-19 09:00 668对于操作系统,我们知道,越靠近CPU的存储器,其存储速度就会越 ... -
异常处理
2016-05-19 00:29 424我知道很多人都知道异常处理,但可能对其底层并不太了解,现在我们 ...
相关推荐
### Linux启动时间优化 在现代计算环境中,系统启动速度对于用户体验和系统性能至关重要。本文将深入探讨如何优化Linux系统的启动时间,并提供一系列实用的技术和工具,帮助用户缩短启动过程。 #### 一、什么是...
### Linux下Oracle服务与监听器自动启动配置详解 在企业级应用环境中,Oracle数据库系统作为核心数据管理平台,其稳定性和可用性至关重要。为了确保Oracle服务(包括数据库服务和监听器)能够在Linux操作系统启动时...
### 嵌入式Linux系统开发概述 #### 一、嵌入式系统基本概念与特点 **1.1 嵌入式系统定义** 嵌入式系统是指将计算机硬件和软件集成在一个或多个处理器上,形成一个专用的计算机系统,用于实现特定功能的产品或设备...
ARM Linux启动过程分析 1. ARM Linux 启动过程概述 ARM Linux 启动过程可以分为四个部分:引导加载程序(bootloader),Linux 内核,文件系统,应用程序。其中 bootloader 是系统启动或复位以后执行的第一段代码,...
启动和关闭Linux系统,可以通过传统的BIOS或UEFI引导方式,也可以利用现代的系统管理工具如Systemd来控制。 总的来说,Linux是一个强大且灵活的操作系统,它提供了一种经济高效的选择,特别是在服务器、嵌入式系统...
"Linux启动过程分析" Linux 启动过程分析是嵌入式 Linux 系统的核心组成部分,理解 Linux 启动过程对嵌入式系统的开发和应用至关重要。本文将详细分析 Linux 启动过程,包括 bootloader 的执行流程和 ARM Linux 的...
一、Linux 操作系统概述 Linux 操作系统是由瑞典赫尔辛基大学的学生 Linus Torvalds 在 1991 年开发出来的,在 GNU 的支持下,Linux 获得了巨大的发展。Linux 操作系统的特点是开放、免费、可移植、多用户和多任务...
### Linux启动脚本详解 #### 一、概述 在Linux环境下,经常需要通过脚本来启动或停止Java应用程序。本文档将详细介绍一个通用的Linux启动脚本,它不仅可以启动Java程序,还能有效地管理进程的生命周期。该脚本由...
### Linux启动盘制作详解 #### 一、概述 在虚拟化技术广泛应用的今天,Linux启动盘成为了一种非常实用的工具,特别是在VirtualBox或VMware等虚拟机环境中。本文将详细介绍如何从零开始构建一个Linux启动盘,适用于...
### Linux启动界面切换:图形界面与字符界面的深入解析 #### 概述 在Linux操作系统中,用户可以选择在启动时进入图形界面或字符界面。这一灵活性不仅满足了不同场景下的需求,也为用户提供了多样化的操作体验。...
3. **文件系统构建**:嵌入式Linux系统通常需要一个定制的文件系统,包含启动脚本、库文件、配置文件等,开发者需要根据需求选择合适的文件系统类型(如BusyBox、Buildroot或Yocto Project)来构建。 4. **设备驱动...
Linux 阿帕奇服务器配置概述 Linux 阿帕奇服务器配置是指在 Linux 操作系统中配置阿帕奇服务器的相关设置,以便实现个人站点的搭建和用户认证。本文将详细介绍 Linux 阿帕奇服务器的配置过程,包括服务器的安装、...
#### 一、概述 在Linux环境中,Oracle数据库的管理是常见的运维操作之一。为了确保系统的稳定运行,有时需要重启Oracle数据库及其监听器。本文将详细介绍在Linux环境下重启Oracle数据库及其监听器的方法,并提供...
在这个概述中,我们将详细讲解 Linux 启动项的设置,包括 chkconfig 命令的使用、运行级别的概念、init 进程的作用、rc.d 目录下的文件结构等。 一、chkconfig 命令 chkconfig 命令是用于管理 Linux 启动项的命令...
以上是Linux启动过程的基本概述。在实际操作中,每个步骤都可能涉及更复杂的细节和配置。通过深入理解这个过程,我们可以更好地调试和优化系统的启动性能,以及解决启动相关的故障。对于Linux初学者和管理员来说,...
基于i386体系结构的Linux启动代码分析,概述Linux系统的启动顺序
#### Linux 2.6 内核启动流程概述 Linux 2.6 内核的启动过程主要包括三个阶段:**解压缩**、**初始化**以及**启动应用程序**。这一过程是操作系统启动过程中至关重要的环节,确保了系统能够正确地初始化硬件资源,...
linux基础教程 # Linux基础教程 - Linux服务器基础教程介绍 Linux是一种自由和开放源代码的类Unix操作系统。...- 稳定可靠:Linux是一个非常稳定和可靠的操作系统,可以长时间运行而不需要重新启动。 - 安全性高:
### Linux 2.4 内核启动过程详解 #### 概述 本文旨在详细解析 Linux 2.4 内核的启动过程,从内核获取主机硬件控制权的那一刻起,直到内核准备好运行用户进程为止。在此过程中,将涵盖 Linux 在启动时所期望的编程...
### ARM Linux启动过程分析 #### 一、引言 随着嵌入式技术的发展,Linux作为一款高度可移植的操作系统,在各种电子设备上得到了广泛应用。针对不同的处理器架构,Linux的启动过程也会有所不同。本文将以S3C2410 ...