https://www.linuxquestions.org/questions/linux-newbie-8/telinit-vs-init-539578/

这里给出结论:从用户的角度来说,是没有任何区别的。

但是如果从实际上出发的话。使用telinit更加容易理解。init本身是一个应该只运行在pid==1情况下的程序,它是Linux系统在启动后执行的第一个进程,它负责一系列的系统初始化工作。因而,“所有其他进程都是init的子进程”的说法是正确的。也就是说,init初始化了哪些服务,系统就会进入哪种状态,这也正是系统运行级别runlevel的原理。

正因为init是一个用于初始化系统的程序,所以它理论上不应该被重复执行,所以从便于用户理解的角度来说,应该给予修改系统运行级别的指令一个单独的命令,它负责告诉(tell)init,用户要求切换至另一种系统运行级别,这就是telinit。实际上,由于init内部在设计的时候就已经考虑到了这种可能性(即runlevel的切换),实际上在init执行任务前会对自身的进程编号pid进行判断,在进程号不为1的时候就执行telinit的功能,即允许通过直接调用init指令来更改系统的运行级别。因而在不少情况下,是允许直接创建一个telinitinit的链接来实现等同功能的——因为在多进程模式下,用户是创建不了pid==1的进程的。

标签: none

添加新评论