我试图了解 Unix 中的运行级别,我发现运行级别 6 是重新启动状态。所以我尝试使用该命令切换到运行级别 6 ,它与我的计算机上的telinit 6
工作方式相同。reboot
我使用的是 Kali Linux,所以不需要 sudo。
更改/切换符文级别只是调用某个进程的命令吗?当我们启动、重新启动或关闭电源时,我们只是在改变运行级别吗?
我试图了解 Unix 中的运行级别,我发现运行级别 6 是重新启动状态。所以我尝试使用该命令切换到运行级别 6 ,它与我的计算机上的telinit 6
工作方式相同。reboot
我使用的是 Kali Linux,所以不需要 sudo。
更改/切换符文级别只是调用某个进程的命令吗?当我们启动、重新启动或关闭电源时,我们只是在改变运行级别吗?
Linux 中有一个名为 SysVinit 的 init 系统,它仿照 UNIX System V 的 init 系统。某些版本的 Linux 实际上仍然使用这个系统,保持与它的兼容性,例如 Systemd 的 SysVcompat,或者部分替换它(没有 sysvcompat,但它们仍然使用 sysv 脚本,如 Debian),或者将它全部替换,例如“纯” Systemd 系统。
SysV 本质上实现了运行级别的概念。脚本放置在 /etc/rc{runlevel}.d/ 中,其中 runlevel 是运行级别。SysV 还定义了运行级别的默认排序行为,包括默认转到哪一个。每个运行级别中的每个脚本都使用其启动或关闭功能运行,具体取决于该运行级别是上升还是下降。因此,在 sysvinit 系统中,是的,当您启动其第一次运行 /sbin/init 时,该程序将随后运行每个运行级别中每个脚本的启动功能。我还应该指出,您可以安装比 /etc/rc* 中链接的脚本更多的脚本,这就是您启用和禁用脚本以及它们控制的服务的方式。
不使用 sysv 的系统根本不需要像 systemd 那样做这个。简而言之,systemd 具有定义其依赖关系的单元,例如其他服务、挂载点、计时器或诸如“network.target”之类的目标。与其详细介绍 systemd,我只想说 systemd 保持与 sysv 脚本的完全兼容性,但不一定是它的运行级别。另外 init 可以先运行,或者 systemd 可以运行然后运行所有 sysv 的脚本。或者你的发行版可能已经用 systemd 单元替换了你所有的 sysv 脚本。大多数发行版都会安装兼容性脚本,以便通过 systemd之类的东西
reboot
或工作。telinit
在
init
基于操作系统/sbin/telinit
中链接到/sbin/init
和在systemed
基于操作系统中它链接到/sbin/systemed
. 因此,这是一种与或类似软件进行通信的init
方式systemed
。telinit 6
和的结果reboot
是一样的,但他们却领悟了不同的想法。引用自http://www.tutorialspoint.com/unix_commands/init.htm
因此,更改
runlevel
不等于rebooting
orpower off
。基于
init
操作系统的操作系统runlevel
由/etc/inittab
. 在启动系统时init
读取文件以决定启动哪些进程组。运行级别 6 表示不要启动任何进程并重新启动。改变
/etc/inittab
是永久性的。如果文件被修改init
,则在重新启动时更改运行级别并坚持下去,直到进一步修改文件。效果
telinit
是一次性的,无需重启。重新启动后init
再次读取/etc/inittab
并相应地启动运行级别。现在,运行级别 6 表示
init
要终止所有子进程并重新启动。telinit 6
init
杀死所有子进程并重新启动。上,发出reboot
命令,init 做同样的事情。但是,这并不意味着更改运行级别就等于重新启动。因为如果您将系统的运行级别更改为 6 永久使用/etc/inittab
它将继续重新启动。如果您使用
telinit 6
重新启动系统而不是reboot
命令它不会有任何区别。