在我们完成上面的所有资讯后,其实整个 Linux 主机就已经在等待我们使用者的登陆啦!但是,相信您应该还是会有一点疑问的地方,那就是:『我该如何切换 run level 呢?』会不会很难啊?不会啦!很简单~但是依据运行的时间而有不同的方式啊!
事实上,与 run level 有关的启动其实是在 /etc/rc.d/rc.sysinit 运行完毕之后。也就是说,其实 run level 的不同仅是 /etc/rc[0-6].d 里面启动的服务不同而已。不过,依据启动是否自动进入不同 run level 的配置,我们可以说:
- 要每次启动都运行某个默认的 run level ,则需要修改 /etc/inittab 内的配置项目,亦即是『 id:5:initdefault: 』里头的数字啊;
- 如果仅只是暂时变更系统的 run level 时,则使用 init [0-6] 来进行 run level 的变更。但下次重新启动时,依旧会是以 /etc/inittab 的配置为准。
假设原本我们是以 run level 5 登陆系统的,但是因为某些因素,想要切换成为 run level 3 时,该怎么办呢?很简单啊,运行『 init 3 』即可切换。但是 init 3 这个动作到底做了什么呢?我们不是说了吗?事实上,不同的 run level 只是加载的服务不同罢了,亦即是 /etc/rc5.d/ 还有 /etc/rc3.d 内的 Sxxname 与 Kxxname 有差异而已。所以说,当运行 init 3 时,系统会:
- 先比对 /etc/rc3.d/ 及 /etc/rc5.d 内的 K 与 S 开头的文件;
- 在新的 runlevel 亦即是 /etc/rc3.d/ 内有多的 K 开头文件,则予以关闭;
- 在新的 runlevel 亦即是 /etc/rc3.d/ 内有多的 S 开头文件,则予以启动;
也就是说,两个 run level 都存在的服务就不会被关闭啦!如此一来,就很容易切换 run level 了,而且还不需要重新启动呢!真方便。那我怎么知道目前的 run level 是多少呢?直接在 bash 当中输入 runlevel 即可啊!
[root@www ~]# runlevel N 5 # 左边代表前一个 runlevel ,右边代表目前的 runlevel。 # 由於之前并没有切换过 runlevel ,因此前一个 runlevel 不存在 (N) |
# 将目前的 runlevel 切换成为 3 (注意, tty7 的数据会消失!) [root@www ~]# init 3 NIT: Sending processes the TERM signal Applying Intel CPU microcode update: [ OK ] Starting background readahead: [ OK ] Starting irqbalance: [ OK ] Starting httpd: [ OK ] Starting anacron: [ OK ] # 这代表,新的 runlevel 亦即是 runlevel3 比前一个 runlevel 多出了上述 5 个服务 [root@www ~]# runlevel 5 3 # 看吧!前一个是 runlevel 5 ,目前的是 runlevel 3 啦! |
那么你能不能利用 init 来进行关机与重新启动呢?可以的啦!利用『 init 0 』就能够关机,而『 init 6 』就能够重新启动!为什么?往前翻一下 runlevel 的定义即可了解吧!