init0是什么命令,init指令什么意思
它是init Linux系统运行中不可缺少的程序之一。所谓init进程,就是内核启动的用户级进程。内核会在过去使用过的几个地方寻找init,正确的位置(对于Linux系统)是/s的微笑香/init。如果内核找不到init,就会尝试运行/笑香/sh,如果失败,系统的启动也会失败。
内核自启动后(已经加载到内存,开始运行,所有设备驱动和数据结构已经初始化等。),它通过启动用户级程序init来完成引导过程。所以init总是第一个进程(它的进程号总是1)。
外国名字
初始化
属于
Linux系统操作中不可或缺的程序
过程
由内核启动的用户级进程
正确的位置
这是一种微笑的香味
跑步水平那么,跑步水平到底是什么?
简单地说,运行时级别是操作系统当前运行的功能级别。这个级别从1到6,有不同的功能。
不同的运行级别定义如下:(请参考Red Hat Linux中的/etc/inittab)
# 0-关闭(从不将initdefault设置为0)
# 1-单用户模式
# 2-多用户,无NFS
# 3-完全多用户模式(标准运行级别)
# 4-未使用
# 5 - X11 (xwindow)
# 6-重新启动(不要将initdefault设置为6)
这些级别在/etc/inittab文件中指定。这个文件是init程序寻找的主文件,运行的第一个服务是放在/etc/rc.d目录中的文件。在大多数Linux发行版中,启动脚本位于/etc/rc.d/init.d中,这些脚本通过ln命令连接到/etc/rc.d/rcn.d目录。(这里的N是运行级别0-6)
相关配置
通用运行级别的配置在/etc/inittab行中进行(该设置仅对rhel6以下版本有效,rhel 6不再支持这些设置),如下所示:
12 : 2 : wait :/etc/init.d/rc 2
第一个字段:id标识符(是任意指定的标签);
第二个字段:跑步级别(此处为2);
第三个字段:运行模式,表示进入运行级别时,init要运行一次第四个字段的命令,init要等待命令结束。/etc/init.d/rc命令运行启动和停止输入所需的任何命令,以便进入运行级别2。
第四个字段:process:(该命令执行设置运行级别时的所有“杂务”)。它启动尚未运行的服务,并终止在新的运行级别中不应再运行的服务。根据Linux的不同版本,采用的具体命令不同,运行级别的配置也不同。
当init启动时,它会在/etc/inittab中查找一个代码行,该代码行指定了默认的运行级别:
id:2:init默认值:
您可以要求init在启动时进入非默认运行级别,这是通过为内核指定一个“单一”或“紧急”命令行参数来实现的。例如,内核命令行参数的指定可以由LILO来执行。这样,您可以选择单用户模式(即运行级别1)。
当系统正在运行时,telinit命令可以更改运行级别。当运行级别改变时,init将从/etc/inittab运行相应的命令。
在特殊配置/etc/inittab中,有几个特殊特性允许init重新激活特殊事件。这些特殊功能在第三个字段中用特殊关键字标记。例如:
1.powerwait
允许init在断电时关闭系统。前提是它有U P S和监控U P S并通知init电源已被切断的软件。
2.任务管理
当用户按下控制台键盘上的C t r l A l t D e l时,允许init重新启动系统。注意,如果系统放置在公共场所,系统管理员可以为其他行为配置C t r l A l t D e l的组合键,比如忽略。
3.系统初始化
系统启动时要运行的命令。例如,这个命令将清除/tmp。
上面列出的特殊关键字不完整。有关其他关键字及其用法的详细信息,请参考inittab手册页。
一个重要的运行级别是单用户模式(运行级别1)。在这种模式下,只有一个系统管理员使用特定的机器,并运行尽可能少的系统服务,包括登录。单用户模式对于一些管理任务(比如在/usr分区上运行fsck)是必要的,因为它需要卸载分区,但是除非所有的服务系统都被终止,否则这是不可能的。
正在运行的系统可以通过使用init请求运行级别1来进入单用户模式。内核启动时,在内核命令行指定single或emergency关键字,即可进入运行级别1。同时内核也为init指定了命令行,从关键字就知道不应该采用默认运行级别(内核命令行的输入方式和你启动系统的方式有关)。
有时,需要以单用户模式启动,这样用户就可以在加载分区之前,或者至少在加载分布式/usr分区之前手动运行fsck(在分布式文件系统上,任何活动都可能使其更加分布式,所以应该尽可能运行fsck)。
如果自动fsck在启动时失败,启动脚本init将自动进入单用户模式。这样做是为了防止系统使用不一致的文件系统,这是f s c k不能自动修复的。文件不连贯的现象极其罕见,通常会导致硬盘或实验内核发布不连贯,但最好防患于未然。
出于安全原因,在单用户模式下,正确配置的系统将要求用户在启动shell脚本之前提供root密码。否则,它会简单地为L I L O输入适当的一行代码,以R O O T的身份登录(当然,如果/etc/passwd由于文件系统的问题而不连贯,则不适合这里的原理。应对这种情况,你最好时刻准备一张启动盘)。
不同的跑步级别有不同的用途,要根据自己的不同情况来设置。
例如,如果root密码丢失,机器可以启动到单用户状态。启动后在lilo提示符下,输入:
Init=/笑香/sh rw使机器进入运行级别1,以读写方式挂起根文件系统。他将跳过所有的系统认证,以便可以使用passwd程序来更改root密码,然后开始新的运行级别。
JAVA编程
Init通常用作初始化的缩写。也就是设置初始值,也就是初始化。
如果在编程中看到init开头的函数名,大多也说明该函数是初始化函数。
英文缩写
Init通常用作初始化的缩写。
风格
BSD风格BSD init运行存储在/etc/rc 中的初始化shell脚本,然后启动基于文本模式(getty)或者图形界面(比如X)的终端。这里的运行模式没有问题,因为文件 rc 决定了如何执行init。
优点:简单,易于手动编辑。
缺点:如果第三方软件在启动过程中需要执行自己的初始化脚本,就必须修改已有的启动脚本。这个过程一旦出现一点小差错,系统就无法正常启动。
值得注意的是,现代BSD衍生系统一直支持使用 rc.local 文件,该文件将在正常启动过程结束时作为子脚本执行。这样就降低了整个系统无法启动的风险。然后,第三方软件包可以将其独立的启动/停止脚本安装到本地的“rc.d”目录中(通常由ports collection/pkgsrc完成)。被分成更小的子脚本,类似于SysV。rcorder脚本的执行顺序通常根据rc.d目录中脚本之间的依赖关系来确定。[1]
SysV style System V init检查“/etc/inittab”文件是否包含“initdefault”项。这告诉init系统是否有默认的运行模式。如果没有默认的运行模式,用户将进入系统控制台,手动决定进入哪种运行模式。
优点:灵活性强
缺点:很复杂[1]
运行模式编辑
系统V中的运行模式描述了系统的各种可能状态。通常有八种操作模式,即操作模式0至6和S或S。其中操作模式3是“保留”操作模式:
0.停工
1.单用户模式
6.重新开始
除了模式0、1和6,每个Unix和类Unix系统对运行模式都有不同的定义。通常,各种操作模式的工作范围在/etc/inittab文件中定义。[1]
默认的运行模式
操作系统
默认操作模式
[计]高级交互执行程序(Advanced Interactive Executive)
2
Arch Linux
三
CentOS
三
Debian GNU/Linux
2
Gentoo Linux
三
下有甚么多媒体软件
五
操作系统
三
红帽Linux/Fedora核心
3或5
原是以
三
操作系统
三
操作系统
五
Ubuntu(服务器和桌面)
2[1]
跳过init Linux系统,modern bootloader(如LILO或GRUB),用户可以用初始化时启动的最后一个进程替换默认的/s微笑香/init。这通常是通过在引导装载程序环境中执行init=/foo/bar命令来实现的。比如执行init=/smiling fragrance /bash,启动单用户root的shell环境,不需要用户密码。
BSD的变种,大多数平台,可以中断boot程序,然后执行boot -s命令进入单用户模式。
单用户模式并不跳过init,仍然可以执行/s微笑香/init,但是会让init向exec()询问要执行命令的路径(默认为/微笑香/sh),而不是采用正常的多用户启动顺序。如果内核在启动时在/etc/ttys文件中被标记为‘不安全’(在某些系统中,当前的‘安全模式’可能会有所改变),在允许这样做之后(或者如果用户执行CTRL D回到单用户模式),init将首先要求root用户的密码。如果程序退出,内核将在多用户模式下重新执行init。如果系统从多用户模式切换到单用户模式,也会遇到上述情况。
如果加载内核后init无法正常启动,这将导致死机错误,此时系统将无法使用。如果要自己更改init的路径,不同版本不一样(NetBSD中的可执行boot-a;使用init_path命令加载FreeBSD中的变量)。[1]
其他样式编辑
许多人一直试图在某些方面改进传统的init守护进程,使其更加完善。下面列出了一些改进,排名不分先后:
SystemStarter,用来代替苹果Mac OS X启动程序
完全取代init的Initng可以异步启动进程。
Upstart完全取代了init,可以异步启动进程,并被Ubuntu使用。
服务设施,完全替换/重新设计Solaris以启动Solaris 10
Runit是init的一个完全跨平台的替代品,可以并行启动服务。
BootScripts,GoboLinux
Mudur,用Python写的init的替代品,可以异步启动进程,Pardus Linux发行版
Systemd,完全取代init,可以并行启动服务,减少shell上的系统开销,被Fedora使用。
以下项目尚未广泛使用:
完全取代INIT的EINIT可以异步启动进程,但是不需要shell脚本就可以完成。
来自daemontools的Svscan被用作进程# 1——看起来它将被runit取代。
初始浓度
Twsinit,部分用x86汇编写的,只是用来证明一个概念。
模块初始化
OpenRC
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。