Linux的运行等级与目标

在老的 Linux 发行版本中,系统运行分红不一样的运行级别(run level),不一样的级别所启动的服务搭配有所不一样。较新的 Linux 发行版本,好比 CentOS 7+,已经将运行级别替换成另外一个新的概念--目标(target)。本文会为你们作一个比较,并对二者间的区别作以诠释。



运行级别 Run Level


你们都知道 Windows 有安全模式,它是Windows的最小模式,和普通模式相比,安全模式可让用户更好地进行系统检测以及错误修复。Linux 的运行级别是个相似的机制,不一样的运行级别有不一样的做用: html



咱们一般用到的是级别 3 和 5,通常服务器不须要安装图形界面,而且须要支持用户远程链接,因此运行级别会选择 3;我的电脑通常须要 GUI,因此会选择运行级别 5。 shell


想查看当前系统的运行级别可使用命令用到命令 安全

#runlevel 服务器

N 5 并发

上面的结果表示当前的运行级别是 5。在不一样级别间切换可使用命令 ssh

#init [运行级别] 工具

好比当前运行在级别 3,是多用户字符界面,想要启动 GUI 图形界面,只须要输入 init 5  学习


虽然运行级别能够实时切换,若是想修改系统启动时默认的运行级别,在 CentOS 5 和 6 中也能够修改 /etc/inittab 文件来进行配置。 spa



系统初始化进程 systemd vs. init


在 CentOS 7 以前,系统的初始化进程是 init,它的 PID 是 1,初始化进程就是系统第一个被执行的程序,全部其余进程都是它的子进程,因此咱们切换运行级别用到的命令是 init,系统启动默认运行级别的配置文件是 /etc/inittab。 设计


从 CentOS 7 开始,系统初始化进程采用了全新的 systemd。从它的名字能够看出,它是一个服务,由系统自动在后台运行。和 init 相比,systemd 有一些明显的优点:


1) systemd 在系统启动时使用了并发的启动机制,而 init 是按顺序依次启动每项服务。实际上不少服务之间没有依赖关系,不须要依次等待。在 Linux 早期,计算机的CPU是单核的,一次只能处理一项任务,因此 init 的设计有它的合理性。但随着硬件技术发展,如今的服务器CPU大可能是多核心的,能够同时处理多项任务,systemd 能够并发启动那些不相关的服务,因此系统启动速度获得了极大的提高。


2) systemd 是按需启动服务,而 init 是将全部后台服务通通启动,所有完成后才容许用户登陆。init 的这种方式会使得系统启动比较慢,另外也会占用比较多的系统资源。systemd 采用的方式是只有某个服务被请求时才会启动它,使用完成后会动态将该服务关闭,因此不论是启动速度,仍是系统资源的使用, systemd 都有很大的优点。


systemd 有两个核心的概念,单元(unit)和 目标(target)。systemd 进程对系统的管理就是经过一个个的单元来实现的。好比服务,每个服务都有一个对应的单元,并且每一个单元都有一个配置文件,配置文件一般以 .service 做为文件名后缀,像 sshd 服务,它的配置文件就是 /usr/lib/systemd/system/sshd.service


有一类比较重要的单元叫目标单元(target unit),或者简称目标(target),它们的配置文件名后缀为 .target。在 systemd 中,咱们用 target 来模拟实现系统不一样的运行级别。


经过目标(Target)来实现运行级别


上面提到,CentOS 7 将系统初始化进程从 init 改成了 systemd,init 的运行级别(runlevels)也改为了用目标(target)来实现,不一样的运行级别和目标之间是什么对应关系呢,咱们用下面这张图来作了一个总结:



经常使用的运行级别是 3 (多用户字符模式)和 5(多用户图形界面模式),它们分别对应的目标就是 multi-user.target 和 graphical.target。设置和切换不一样的运行级别,CentOS 7 仍是向前支持 init 命令,可是更建议咱们使用 systemd 的管理工具 systemctl 来完成。


1) 查看当前系统默认运行,可使用 systemctl get-default 命令

#systemctl get-default

multi-user.target


2) 切换不一样运行级别,以管理员身份使用 systemctl [目标名称] 命令

#systemctl isolate graphical.target    切换到图形界面


3) 设置系统启动默认运行级别

在 CentOS 5 和 6 中,系统启动默认的运行级别能够在 /etc/inittab 文件中进行配置,但在 CentOS 7 中,咱们打开这个配置文件看一下:

从配置文件内容能够看到,“在这里作任何的配置对系统都是没有做用的,systemd 用目标来取代运行级别。默认有两个主要的目标,multi-user.target 至关于运行级别 3,graphical.target 至关于运行级别 5。使用 systemctl get-default 来看当前使用目标,使用 systemctl set-default Target.target 来设置系统默认目标”。


因此咱们用下面的命令来试一下,将系统启动目标设置为 graphical

#systemctl set-default graphical.target

设置成功后,重启电脑,发现果真进入了 GUI 图形界面模式。



最后


到这里,systemd 如何使用 target 来替换 init 的 runlevels 就介绍完了。可能不少老 Linux 用户仍是比较习惯于用 init,但毕竟 systemd 是更一种更先进的技术和方式,你们仍是应该更积极地去接受并学习它。




推荐阅读:

《软连接 vs. 硬连接》

《Linux 目录详解》

《虚拟机安装 Linux 最完整攻略》

《Xshell 与 Xftp 的安装与使用》

《Linux,Unix,GNU 到底有什么样的渊源?》

 

 


- The End -

相关文章
相关标签/搜索