init进程的简介

init进程的简介,第1张

对于Linux系统的运行来说,init程序是最基本的程序之一。但你仍可以大部分的忽略它。一个好的Linux发行版本通常随带有一个init的配置,这个配置适合于绝大多数系统的工作,在这样一些系统上不需要对init做任何事。通常,只有你在碰到诸如串行终端挂住了、拨入(不是拨出)调制解调器、或者你希望改变缺省的运行级别时你才需要关心init。

内核启动了自己之后(已被装入内存、已经开始运行、已经初始化了所有的设备驱动程序和数据结构等等),通过启动用户级程序init来完成引导进程的内核部分。因此,init总是第一个进程(它的进程号总是1)。

内核在几个位置上来查寻init,这几个位置以前常用来放置init,但是init的最适当的位置(在Linux系统上)是/sbin/init。如果内核没有找到init,它就会试着运行/bin/sh,如果还是失败了,那么系统的启动就宣告失败了。

当init开始运行,它通过执行一些管理任务来结束引导进程,例如检查文件系统、清理/tmp、启动各种服务以及为每个终端和虚拟控制台启动getty,在这些地方用户将登录系统。

在系统完全起来之后,init为每个用户已退出的终端重启getty(这样下一个用户就可以登录)。init同样也收集孤立的进程:当一个进程启动了一个子进程并且在子进程之前终止了,这个子进程立刻成为init的子进程。对于各种技术方面的原因来说这是很重要的,知道这些也是有好处的,因为这便于理解进程列表和进程树图。init的变种很少。绝大多数Linux发行版本使用sysinit(由Miguel van Smoorenburg著),它是基于System V的init设计。UNIX的BSD版本有一个不同的init。最主要的不同在于运行级别:System V有而BSD没有(至少是传统上说)。这种区别并不是主要的。在此我们仅讨论sysvinit。 配置init以启动getty:/etc/inittab文件

当init启动后,init读取/etc/inittab配置文件。当系统正在运行时,如果发出HUP信号,init会重读它;这个特性就使得对init的配置文件作过的更改不需要再重新启动系统就能起作用了。 /etc/inittab文件有点复杂。我们将从配置getty行的简单情况说起。

etc/inittab中的行由四个冒号限定的域组成:

id:runlevels:action:process

下面对各个域进行了描述。另外,/etc/inittab可以包含空行以及以数字符号(’#’)开始的行;这些行均被忽略。

id 这确定文件中的一行。对于getty行来说,指定了它在其上运行的终端(设备文件名/dev/tty后面的字符)。对于别的行来说,是没有意义的(除了有长度的限制),但它必须是唯一的。

runlevels 该行应考虑的运行级别。运行级别以单个数字给出,没有分隔符。

action 对于该行应采取的动作,也即,respawn再次运行下一个域中的命令,当它存在时,或者仅运行一次。

ini是初始化的意思。

init进程,它是内核启动的第一个用户级进程。init有许多很重要的任务,比如像启动getty(用于用户登录)、实现运行级别、以及处理孤立进程。

当内核启动了自己之后,已被装入内存、已经开始运行、已经初始化了所有的设备驱动程序和数据结构等等,通过启动用户级程序init来完成引导进程的内核部分。因此,init总是第一个进程(它的进程号总是1)。

当init开始运行,它通过执行一些管理任务来结束引导进程,例如检查文件系统、清理/tmp、启动各种服务以及为每个终端和虚拟控制台启动getty,在这些地方用户将登录系统。

扩展资料

init用法

lassSongBird(Bird):

def__init__(self):

Bird.__init__(self)

self.sound='Squawk'

defsing(self):

printself.song()

classM(父类):

def__init__(self,*args,**kwargs):

super(M,self).__init__()

self.xx=xx

def

__init__()叫做构造方法,在调用了一个实例的方法时,该方法的self参数会自动绑定到实例上(称为绑定方法)

参考资料来源:百度百科—init进程


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11186937.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存