init进程会初始化属性系统吗

问题描述:linux 0号进程和1号init进程的用途。网上查到的乱七八糟的,麻烦各位大牛给个易懂的解释吧,谢谢啦!~ 大家好,小编来为大家解答以下问题,一个有趣的事情,一个有趣的事情,现在让我们一起来看看吧!

C语言中init 是什么意思?

init进程会初始化属性系统吗的相关图片

1. 进程0是所有其他进程的祖先, 也称作idle进程或swapper进程.。

2. 进程0是在系统初始化时由kernel自身从无到有创建.。

3. 进程0的数据成员大部分是静态定义的,即由预先定义好的INIT_TASK, INIT_MM等宏初始化.进程0的描述符init_task定义在arch/arm/kernel/init_task.c,由INIT_TASK宏初始化。 i。

nit_mm等结构体定义在include/linux/init_task.h内,为init_task成员的初始值,分别由对应的初始化宏如INIT_MM等初始化Process 1进程0最终会通过调用kernel_thread创建一个内核线程去执行init函数,这个新创建的内核线程即Process 1(这时还是共享着内核线程0的资源属性如地址空间等)。

init函数继续完成剩余的内核初始化,并在函数的最后调用execve系统调用装入用户空间的可执行程序/sbin/init,这时进程1就拥有了自己的属性资源,成为一个普通进程(init进程)。

至此,内核初始化和启动过程结束。下面就进入了用户空间的初始化,最后运行shell登陆界面。

(注:Init进程一直存活,因为它创建和监控在操作系统外层执行的所有进程的活动。)。

——————这段对进程0的描述引用自《Understanding The Linux Kernel - Third Edtion》

The ancestor of all processes, called process 0, the idle process, or, for historical reasons, the swapper process, is a kernel thread created from scratch during the initialization phase of Linux. This ancestor process uses the following statically allocated data structures (data structures for all other processes are dynamically allocated)。

c++中init是什么意思以及用法的相关图片

c++中init是什么意思以及用法

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进程。

求linux init进程详解的相关图片

求linux init进程详解

init即initialize,属于子函数,用户自命名的,一般顾名思义是初始化的意思 。

意思就是对声明的变量或对象、结构体等进行赋初始值的操作。

比如声明变量int a;

带有初始化的方式是int a = 0;

扩展资料:

init进程介绍

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

在系统完全起来之后,init为每个用户已退出的终端重启getty(这样下一个用户就可以登录)。init同样也收集孤立的进程:当一个进程启动了一个子进程并且在子进程之前终止了,这个子进程立刻成为init的子进程。

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

帮忙解释AIX中的init?谢谢!的相关图片

帮忙解释AIX中的init?谢谢!

Linux init详解

init是Linux系统操作中不可缺少的程序之一。

所谓的init进程,它是一个由内核启动的用户级进程。

内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。

内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。

一、什么是INIT:

init是Linux系统操作中不可缺少的程序之一。

所谓的init进程,它是一个由内核启动的用户级进程。

内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。

内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。

二、运行级别

那么,到底什么是运行级呢?

简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从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行内进行的,如下所示:

12 : 2 : wait : / etc / init.d / rc 2 。

第一个字段是一个任意指定的标签;

第二个字段表示这一行适用于运行那个级别(这里是2);

第三个字 段表示进入运行级别时,init应该运行第四个字段内的命令一次,而且init应该等待该命令结束。/etc/init.d/rc命令运行启动和终止输入以便进入运行级别2时所需的任何命令。

第四个字段中的命令执行设置运行级别时的一切“杂活”。它启动已经没有运行的服务,终止不应该再在新运行级别内运行的服务。根据Linux版本的不同,采用的具体命令也不同,而且运行级别的配置也是有差别的。

init启动时,它会在/etc/inittab内查找一个代码行,这一行指定了默认的运行级别:

id : 2 : initdefault : 。

你可以要求init在启动时,进入非默认运行级别,这是通过为内核指定一个“single”或“emergency” 命令行参数来实现的。比如说,内核命令行参数的指定可通过LILO来执行。这样一来,你就可以选择单用户模式了(即运行级别1)。

系统正在运行时,telinit命令可更改运行级别。运行级别发生变化时, init 就会从/etc/inittab运行相应的命令。

四、/etc/inittab中的特殊配置 。

/etc/inittab中,有几个特殊的特性,允许init重新激活特殊事件。这些特殊特性都是用第三个字段中的特殊关键字标记出来的。比如:

1. powerwait 。

允许init在电源被切断时,关闭系统。其前提是具有U P S和监视U P S并通知init电源已被切断的软件。

2. ctrlaltdel 。

允许init在用户于控制台键盘上按下C t r l + A l t + D e l组合键时,重新启动系统。注意,如果该系统放在一个公共场所,系统管理员可将C t r l + A l t + D e l组合键配置为别的行为,比如忽略等。

3. sysinit

系统启动时准备运行的命令。比如说,这个命令将清除/tmp。

上面列出的特殊关键字尚不完整。其他的关键字及其使用详情,可参考你的inittab手册页。

五、在单用户模式下引导

一个重要的运行级别就是单用户模式(运行级别1),该模式中,只有一个系统管理员使用特定的机器,而且尽可能少地运行系统服务,其中包含登录。单用户模式对少数管理任务(比如在/usr分区上运行fsck)而言,是很有必要的,因为这需要卸载分区,但这是不可能的,除非所有的服务系统已被杀死。

一个正在运行的系统可以进入单用户模式,具体做法是利用init,请求运行级别1。内核启动时,在内核命令行指定single或emergency关键字,就可进入运行级别1了。内核同时也为init指定命令行, init从关键字得知自己不应该采用默认的运行级别(内核命令行的输入方式和你启动系统的方式有关)。

有时,以单用户模式进行启动是必要的,这样一来,用户在装入分区之前,或至少在装入分散的/usr分区之前,能手工运行fsck(在分散的文件系统上,任何活动都可能使其更为分散,所以应该尽可能地运行fsck)。

如果自动化的fsck在启动时失败了,启动脚本init的运行将自动进入单用户模式。这样做是为了防止系统使用不连贯的文件系统,这个文件系统是f s c k不能自动修复的。文件系统不连贯的现象极为少见,而且通常会导致硬盘的不连贯或实验性的内核释放,但最好能做到防患于未然。

由于安全上的考虑,在单用户模式下,启动外壳脚本之前,配置得当的系统会要求用户提供root密码。否则,它会简单地为L I L O输入合适的一行代码,以r o o t的身份登录(当然,如果/etc/passwd已经由于文件系统的问题而不连贯了,就不适合这里的原则了,为对付这种情况,你最好随时准备一张启动盘)。

不同的运行级有不同的用处,也应该根据自己的不同情形来设置。

例如,如果丢失了root口令,那么可以让机器启动进入单用户状态。在启动后的 lilo 提示符下输入:

init=/bin/sh rw 使机器进入运行级1 ,并把 root 文件系统挂为读写。他会跳过所有系统认证,让你可以使用passwd 程序来改变root口令,然后启动到一个新的运行级。

AIX(Advanced Interactive eXecutive)是IBM开发的一套UNIX操作系统。它符合Open group的UNIX 98行业标准(The Open Group UNIX 98 Base Brand),通过全面集成对32-位和64-位应用的并行运行支持,为这些应用提供了全面的可扩展性。它可以在所有的IBM ~ p系列和IBM RS/6000工作站、服务器和大型并行超级计算机上运行。

在系统启动过程中,在预初始化过程中装入根文件系统之后,将发生下面这些事件:

作为启动过程中的最后一个步骤,运行 init 命令。

init 命令尝试读取 /etc/inittab 文件。

如果 /etc/inittab 文件存在,那么 init 命令将尝试在 /etc/inittab 文件中查找 initdefault 条目。

如果 initdefault 条目存在,那么 init 命令使用指定的运行级别作为初始的系统运行级别。

如果 initdefault 条目不存在,那么 init 命令将请求用户从系统控制台 (/dev/console) 输入一个运行级别。

如果用户输入 S、s、M、或者 m 运行级别,那么 init 命令将进入维护运行级别。只有这些运行级别不需要经过正确格式化的 /etc/inittab 文件。

如果 /etc/inittab 文件不存在,那么 init 命令在缺省情况下将使系统进入维护运行级别。

init 命令每隔 60 秒将再次读取 /etc/inittab 文件。如果在 init 命令上一次读取 /etc/inittab 文件之后,其中的内容发生了更改,那么将执行 /etc/inittab 文件中的新命令。

/etc/inittab 文件。

/etc/inittab 文件用于控制初始化过程。

/etc/inittab 文件提供了相应的脚本,以使得 init 命令的角色成为通用的进程调度器。init 命令的进程调度活动中的主要进程是 /etc/getty 线路进程,它将启动单独终端线路。通常由 init 命令进行调度的其他进程包括守护进程和 Shell。

/etc/inittab 文件由一些与位置无关的条目组成,它们的格式如下所示:

Identifier:RunLevel:Action:Command。

每个条目之间由一个换行符进行分隔。换行符前面加上一个反斜杠 (\) 表示继续该条目。在 /etc/inittab 文件中,对于条目的数目没有任何限制(但不能超过最大的条目大小)。最大的条目大小为 1024 个字符。

条目字段包括:

Identifier,由一到十四个字符组成的字段,唯一地标识一个对象。

RunLevel,可以对该条目进行处理的运行级别。

运行级别具有下面的属性:

运行级别有效地对应于系统中的进程配置。

可以为每个由 init 命令启动的进程分配一个或者多个运行级别(该进程可以存在于其中)。

运行级别使用数字 0 到 9 进行表示。例如,如果系统处于运行级别 1,那么只有那些在运行级别字段中包含 1 的条目才会启动。

当您请求 init 命令更改运行级别时,在运行级别字段中不包含匹配条目(对于目标运行级别)的所有进程都将接收到一个警告信号 (SIGTERM)。在使用删除信号 (SIGKILL) 强行结束这些进程之前,有 20 秒钟的过渡期。

通过使用从 0 到 9 的任意组合,可以选择多个运行级别,从而在运行级别字段中为一个进程定义多个运行级别。如果没有指定运行级别,那么就假定该进程在所有的运行级别中都是有效的。

在运行级别字段中,还可能出现其他四种取值,即使它们并不是真正的运行 级别:a、b、c 和 h。仅当使用 telinit 命令请求它们运行时(无论系统当前运行级别如何),才会处理那些运行级别字段中包含这些字符的条目。它们与运行级别的不同之处在于,init 命令不可能进入到运行级别 a、b、c 或者 h。另外,任何这些进程的执行请求都不会更改当前运行级别。而且,在 init 命令更改级别时,不会终止以 a、b 或者 c 命令开头的进程。只有在下面三种情况下才会终止它们:在 /etc/inittab 文件中,它们所在行的操作字段被标记为 off,从 /etc/inittab 中完全删除它们所在的行,或者 init 命令进入到单用户模式。

Action,用于告诉 init 命令如何处理在进程字段中指定的进程。init 命令能识别下列的操作:

respawn:如果进程不存在,则启动该进程。不需要等待它的结束(继续扫描 /etc/inittab 文件)。当进程中止时,重新启动该进程。如果该进程已经存在,则什么也不做,继续扫描 /etc/inittab 文件。

wait:当 init 命令进入到与该条目的运行级别相匹配的运行级别时,启动该进程,并等待它的结束。当 init 命令处于相同的运行级别时,所有后续对 /etc/inittab 文件的读取操作都将导致 init 命令忽略这个条目。

once:当 init 命令进入到与该条目的运行级别相匹配的运行级别时,启动该进程,并且不需要等待它的结束。当它中止时,不重新启动该进程。当系统进入一个新的运行级别,并且该进程的运行来自前一个运行级别更改时,不重新启动该程序。

boot: 仅在系统启动时(即在系统启动的过程中当 init 命令读取 /etc/inittab 文件的时候)处理该条目。启动该进程,不需要等待它的结束,并且当它中止时,不重新启动该进程。为了使得该指令有意义,运行级别应该为缺省值,或者它必须 与启动时 init 命令的运行级别相匹配。对于系统硬件重新启动之后的初始化功能来说,这种操作是非常有价值的。

bootwait:在系统启动之后,当 init 命令第一次从单用户进入到多用户状态时,处理该条目。启动该进程,等待它的结束;并且当它中止时,不重新启动该进程。如果 initdefault 为 2,那么在启动之后运行该进程。

powerfail:仅当 init 命令接收到电源故障信号 (SIGPWR) 时,才执行与这个条目相关联的进程。

powerwait:仅当 init 命令接收到电源故障信号 (SIGPWR) 时,才执行与这个条目相关联的进程,并且在继续处理 /etc/inittab 文件之前,必须等待它结束。

off:如果与这个条目相关联的进程目前正在运行,那么发送警告信号 (SIGTERM),等待 20 秒钟,然后使用删除信号 (SIGKILL) 终止该进程。如果该进程没有运行,则忽略这个条目。

ondemand:从功能上看,与 respawn 是相同的,但是这个操作适用于 a、b 或者 c 值,而不是运行级别。

initdefault: 仅在 init 命令最初被调用时,才扫描包含这个操作的条目。init 命令使用这个条目(如果它存在的话)来确定最初要进入的运行级别。通过使用运行级别字段中所指定的最高运行级别,就可以实现这一点,并使用它作为其初始状 态。如果运行级别字段为空,那么将其解释为“0123456789”:因此,init 命令将进入运行级别 9。另外,如果 init 命令在 /etc/inittab 文件中没有找到 initdefault 条目,那么将要求用户在启动时指定一个最初的运行级别。

sysinit:当 init 命令在登录之前尝试访问控制台时,将执行这种类型的条目。在正常情况下,这个条目仅用于初始化设备(init 命令可能会对这些设备询问有关运行级别的问题)。执行这些条目,并等待它们结束,然后再继续。

Command: 要执行的 Shell 命令。整个命令字段以 exec 作为前缀,然后以 sh -c exec command 的形式传递给一个使用 fork 系统调用生成的 sh。任何合法的 sh 命令语法都可以出现在这个字段中。可以使用 # comment 语法插入注释。

getty 命令将覆盖 /etc/inittab 文件中出现在它之前的任何命令的输出。要将这些命令的输出记录到启动日志,可以使用管道将它们的输出传递给 alog -tboot 命令。

在 init 命令处理 inittab 条目时,stdin、stdout 和 stderr 文件描述符可能是不可用的。向 stdout 或者 stderr 进行写入操作的任何条目都可能无法按照预期的方式工作,除非它们将自己的输出重定向到一个文件或者 /dev/console。

对于修改 /etc/inittab 文件中的记录,仅支持下列的命令:

mkitab:将记录添加到 /etc/inittab 文件。

lsitab:列出 /etc/inittab 文件中的记录。

chitab:更改 /etc/inittab 文件中的记录。

rmitab:删除 /etc/inittab 文件中的记录。

例如,您希望向 /etc/inittab 文件添加一条记录,以便在运行级别 2 中运行 find 命令,并且在它结束后再次启动它:

1. 运行 ps 命令,并显示那些仅包含单词 find 的进程:

# ps -ef

grep find

root 19750 13964 0 10:47:23 pts/0 0:00 grep find。

2. 使用 mkitab 命令向 /etc/inittab 添加一条名为 xcmd 的记录:

# mkitab "xcmd:2:respawn:find / -type f > /dev/null 2>&1"。

3. 使用 lsitab 命令显示新的记录:

# lsitab xcmd

xcmd:2:respawn:find / -type f > /dev/null 2>&1。

4. 显示进程:

# ps -ef

grep find

root 28972 13964 0 11:07:33 pts/0 0:00 grep find。

5. 结束 find 进程:

# kill 25462

6. 显示进程:

# ps -ef

grep find

root 23538 13964 0 10:58:24 pts/0 0:00 grep find。

root 28966 1 4 10:58:21 - 0:00 find / -type f。

由于 action 项被设置成为了 respawn,所以一个新的 find 进程(上面显示的 28966)在前一个进程结束后又被系统启动了。

这个进程会被不断的重新启动,除非把 action 项的设置修改,如:

1. 把 xcmd 这条记录的 action 项的值从 respawn 修改为 once:

# chitab "xcmd:2:once:find / -type f > /dev/null 2>&1"。

2. 显示进程:

# ps -ef

grep find

root 20378 13964 0 11:07:20 pts/0 0:00 grep find。

root 28970 1 4 11:05:46 - 0:03 find / -type f。

3. 结束 find 进程:

# kill 28970

4. 显示进程:

# ps -ef

grep find

root 28972 13964 0 11:07:33 pts/0 0:00 grep find。

可以看到 find 进程没有再被系统启动。

要从 /etc/inittab 文件中删除这条记录,您可以使用 rmitab 命令。例如:

# rmitab xcmd

# lsitab xcmd

/etc/inittab 条目的顺序 。

在 /etc/inittab 文件中,基本条目按照如下所示的方式进行排序:

initdefault

sysinit

Powerfailure Detection (powerfail)。

Multiuser check (rc)。

/etc/firstboot (fbcheck)。

System Resource Controller (srcmstr)。

Start TCP/IP daemons (rctcpip)。

Start NFS daemons (rcnfs)。

cron

pb cleanup (piobe)。

getty for the console (cons)。

必须在 etc/inittab 文件的开始处附近启动系统资源控制器(System Resource Controller,SRC),因为需要 SRC 守护进程来启动其他进程。因为 NFS 需要 TCP/IP 守护进程正确地运行,所以应该在启动 NFS 守护进程之前启动 TCP/IP 守护进程。/etc/inittab 文件中的条目根据依赖关系进行排序,这意味着,如果一个进程 (process2) 的正常运行需要另一个进程 (process1) 的存在,那么在 /etc/inittab 文件中,process1 的条目应该出现在 process2 的条目之前。

原文地址:http://www.qianchusai.com/init%E8%BF%9B%E7%A8%8B%E4%BC%9A%E5%88%9D%E5%A7%8B%E5%8C%96%E5%B1%9E%E6%80%A7%E7%B3%BB%E7%BB%9F%E5%90%97.html

写一件事的作文500字以上,写一件事的作文500字以上四年级

写一件事的作文500字以上,写一件事的作文500字以上四年级

v2ray订阅资料,v2ray订阅地址2020

v2ray订阅资料,v2ray订阅地址2020

前台接待顶岗周记40篇通用,前台接待工作周记300字

前台接待顶岗周记40篇通用,前台接待工作周记300字

cc/毕业创作美术国画作品,毕业创作美术作品油画

cc/毕业创作美术国画作品,毕业创作美术作品油画

opkg卸载软件,oppok3卸载自带软件

opkg卸载软件,oppok3卸载自带软件

stomach用英语怎么说,stomachache用英语怎么说

stomach用英语怎么说,stomachache用英语怎么说

legendary,legendary兰花香水价格

legendary,legendary兰花香水价格

总分总描写动物的作文,总分总结构写动物的作文500

总分总描写动物的作文,总分总结构写动物的作文500

什么是项目交付,什么是项目交付的主体

什么是项目交付,什么是项目交付的主体

knuckle,knuckle up什么意思

knuckle,knuckle up什么意思