如何在Linux中使用'init'命令

init在启动时运行并启动所有后台进程

在里面是所有的父母吗Linux进程.它是计算机启动时启动的第一个进程,它一直运行到系统关闭为止。它是所有其他进程的祖先。

其主要作用是从存储在文件中的脚本中创建进程/etc/inittab.这个文件通常存储导致的条目在里面产卵盖型系统用户可以登录到的每一行。它还控制任何特定系统所需的自治过程。

Tux The Penguin是官方的Linux吉祥物。
盖蒂图片/ John Coulter

运行级

一种Runlevel.是系统的软件配置,该软件配置仅允许所选的进程组执行。产物产生的过程在里面对于这些运行尺寸中的每一个都在/ etc / inittab文件中定义。在里面支持八运行级:0.通过6.S.S..当特权用户运行时,runlevel会更改Telinit,发送适当的信号给在里面,告诉它普拉维尔改变了。

运行级别0、1和6是保留的。运行级别0停止系统,运行级别6重新启动系统和运行级1强制系统进入单用户模式。运行级别S不打算直接使用,而是由运行级别1启动时执行的脚本使用。

运行级别7到9是有效的,但没有良好的文档说明,因为传统的Unix变体不使用它们。运行级别S和S是相同的。

启动

在里面方法的最后一个步骤执行核心引导序列,它会查找文件/ etc / inittab,看看是否有类型的条目initdefault..initdefault条目决定了系统的初始运行级别。如果没有这样的条目(或者根本没有/etc/inittab),必须在系统控制台

运行级别S或S使系统进入单用户模式,不需要/etc/inittab文件。在单用户模式下,在/dev/console上打开一个根shell

输入单用户模式时,初始化读取控制台IOCTL.来自/etc/ioctl.save的状态。如果此文件不存在,初始化用CLOCAL设置在9600波特初始化线路。当初始化离开单用户模式,它将控制台的ioctl设置存储在这个文件中,以便在下一个单用户会话中重用它们。

当第一次进入多用户模式时,在里面执行引导和Bootwait条目以允许文件系统在用户登录之前挂载。然后,匹配runlevel进程的所有条目。

开始新过程时,在里面首先检查文件/ etc / initscript是否存在。如果它确实,它将使用此脚本启动该过程。

每当一个子程序终止时,在里面在/var/run/utmp和/var/log/wtmp中记录它死亡的事实和原因,提供这些文件存在。

改变运行级

Telinit帮助屏幕

在它生成所有指定的进程之后,在里面等待其一个后代过程来死,PowerFiail信号,或直到通过Telinit发信号通知系统的运行级别。当发生这三种条件中的一个时,它重新检查/ etc / inittab文件。可以随时将新条目添加到此文件中。然而,初始化仍然等待上述三个条件中的一个出现。为提供瞬时响应,则Telinit Q.命令醒来在里面重新检查/etc/inittab文件。

如果在里面是否处于单用户模式并接收到电源故障信号,它读取文件/ etc / powerstatus。然后开始一个命令基于此文件的内容:

  • F苦恼):电源故障,UPS提供电源。执行powerwaitpowerfail参赛作品。
  • O.K.):电源已恢复,执行Powerokwait.参赛作品。
  • L.):电源即将掉电,UPS电池电量不足。执行powerfailnow参赛作品。

如果/ etc / powerstatus不存在或包含字母f,o或l以外的任何内容,在里面表现得好像它读了字母F.

现在气馁地使用SIGPWR和/ etc / powerstatus。在现代使用/ dev / intctl控制信道Linux发行版

在里面请求更改Runlevel,它将警告信号Sigterm发送到新Runlevel中未定义的所有进程。然后在强制终止这些过程之前等待五秒钟,使用Sigkill信号。在里面假设所有这些过程及其后代仍然存在于同一过程组中在里面最初是为他们创造的。如果任何进程更改其进程组从属关系,它将不会收到这些信号。这些进程必须单独终止。

Telinit

Telinit链接到/sbin/init。它接受一个单字符参数和信号在里面执行适当的行动。以下论点是指令Telinit

  • 0 1 2 3 4 5或6:切换到指定的运行级别。
  • A,B,C:仅处理具有Runlevel A,B或C的/ etc / inittab文件条目。
  • 问:问::重新检查/ etc / inittab文件。
  • S.S.:切换到单用户模式。有时,调用单用户模式恢复模式因为它经常用于执行紧急系统维修。
  • :重新执行(保留状态)。没有重新检查/ etc / inittab文件发生。Runlevel应为S,S,1,2,3,4或5;否则,请求默默地忽略。

Telinit也可以告诉在里面在发送流程之间等待多长时间SIGTERM和SIGKILL信号.默认值为五秒钟,但可以使用此值更改- t选择。

Telinit只能由具有适当特权的用户调用。

在里面二进制检查是否为在里面Telinit通过查看其流程ID。真的在里面进程号始终为1。由此,它得出,而不是呼唤Telinit,一个人可以使用在里面作为一种快捷方式。

这个页面有用吗?