telinit和init的区别
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
指令来更改系统的运行级别。因而在不少情况下,是允许直接创建一个telinit
到init
的链接来实现等同功能的——因为在多进程模式下,用户是创建不了pid==1
的进程的。