Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Linux的运行等级 (run level)与目标(target)

Linux的运行等级 (run level)与目标(target)

作者头像
Coding十日谈
发布于 2020-08-13 02:54:53
发布于 2020-08-13 02:54:53
5.3K0
举报
文章被收录于专栏:Coding十日谈Coding十日谈

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

运行级别 Run Level

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

我们通常用到的是级别 3 和 5,一般服务器不需要安装图形界面,并且需要支持用户远程连接,所以运行级别会选择 3;个人电脑一般需要 GUI,所以会选择运行级别 5。

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

#runlevel

N 5

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

#init [运行级别]

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

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

系统初始化进程 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 是更一种更先进的技术和方式,大家还是应该更积极地去接受并学习它。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Coding十日谈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
在Linux中检查当前运行级别的五种方法?
运行级就是Linux操作系统当前正在运行的功能级别。存在七个运行级别,编号从0到6。系统可以引导到任何给定的运行级别。运行级别由数字标识。
用户8710643
2021/06/08
1.9K0
CentOS下如何更改默认的启动方式
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/78708355
泥豆芽儿 MT
2018/09/11
1.9K0
CentOS下如何更改默认的启动方式
正确理解Linux运行级别那点事儿
您可以将Linux运行级别视为操作系统运行的不同“模式”。每一种模式或运行级别都有自己的进程和服务列表,这些进程和服务要么被打开,要么被关闭。
用户6543014
2019/12/17
2.3K0
正确理解Linux运行级别那点事儿
第十六章.Linux系统管理-开机启动流程
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
2.5K0
第十六章.Linux系统管理-开机启动流程
Linux之运行级别指令
文章目录 1. 指定运行级别 1.1 基本介绍 1.2 应用实例 1.3 CentOS7后运行级别说明 1. 指定运行级别 1.1 基本介绍 运行级别说明: 0 :关机 1 :单用户【找回丢失密码】 2:多用户状态没有网络服务 3:多用户状态有网络服务 4:系统未使用保留给用户 5:图形界面 6:系统重启 常用运行级别是3和5 ,也可以指定默认运行级别. 1.2 应用实例 命令: init [0123456]应用案例:通过init来切换不同的运行级别,比如动5-3,然后关机。 1.3 Cent
兮动人
2021/06/11
3.2K0
Linux之运行级别指令
Centos8种如何更改运行级别
如何在Systemd中查看当前targets(运行级别) 系统启动时,默认情况下,systemd激活default.target单元。它的主要工作是通过依赖关系来激活服务和其他单元。要查看默认目标,输入下面的 :
用户1685462
2021/09/05
9760
Linux系统安全-Linux启动流程和服务管理(init和systemd)
GRUB2相较于GRUB一代的提升:更健壮、可移植、更强大。支持BIOS、EFI和OpenFirmware,支持GPT和MBR分区表。支持非Linux系统,如苹果HFS文件系统和Windows的NTFS文件系统。
谢公子
2022/01/19
2.3K0
Linux系统安全-Linux启动流程和服务管理(init和systemd)
011.Linux目录结构以及重要系统文件
作用:DNS(Domain Name System)配置文件,DNS主要负责将网站域名解析为对应的IP地址,从域名到IP的解析过程,称作A记录,即Address Record
CoderJed
2020/05/09
1K0
011.Linux目录结构以及重要系统文件
Linux学习笔记之Centos7安装GNOME桌面环境
最小化安装Centos7,系统默认是命令行界面,如果像我一样有特殊需求,这时就需要我们手动来安装用户图形界面了。 
Jetpropelledsnake21
2018/12/06
9.5K2
Linux之service命令基本使用
文章目录 服务(service)管理 1. 介绍 2. service 管理指令 3. service 管理指令案例 4. 查看服务名的方式 5. 服务的运行级别(runlevel): 6. Cen
兮动人
2021/06/11
1K0
Linux之service命令基本使用
centos 中安装与使用genome
3.在centos7里面的默认运行级别可以查看到有两种:multi-user.target和graphical.target。
Fanssi
2020/07/01
7310
Linux之service命令基本使用
1) service 服务名 [start | stop | restart | reload | status]
兮动人
2021/05/31
1.4K0
Linux之service命令基本使用
CentOS7下Systemctl详解
Systemd是由红帽公司的一名叫做Lennart Poettering的员工开发,systemd是Linux系统中最新的初始化系统(init),它主要的设计目的是克服Sys V 固有的缺点,提高系统的启动速度,systemd和upstart是竞争对手,ubantu上使用的是upstart的启动方式,centos7上使用systemd替换了Sys V,Systemd目录是要取代Unix时代依赖一直在使用的init系统,兼容SysV和LSB的启动脚本,而且能够在进程启动中更有效地引导加载服务。 system:系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其他进程,根据管理,字母d是守护进程(daemon)的缩写,systemd这个名字的含义就是它要守护整个系统。
用户5807183
2019/08/02
1.4K0
centos systemctl_正在不使用中
CentOS 7.x开始,CentOS开始使用systemd服务来代替daemon,原来管理系统启动和管理系统服务的相关命令全部由systemctl命令来代替。
全栈程序员站长
2022/09/30
3470
linux selenium chrome 加载用户配置文件
需要安装linux桌面环境(系统版本: CentOS Linux release 7.6.1810 (Core))
py3study
2020/05/14
4K0
Systemd 入门教程:命令篇
Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置。
咻一咻
2020/05/29
1.1K0
linux基础命令介绍十三:启动流程
固件(firmware)是指设备最底层的,让设备得以运行的程序代码。简单理解就是:固定在硬件上的软件。计算机中的许多设备都拥有固件(如硬盘、鼠标、光驱、U盘等),在计算机启动过程中,最先读取的就是位于主板上的固件,这个固件当前有两种类型:传统的BIOS和新的通用性更强的UEFI。
用户5030870
2019/04/11
2.1K0
CentOS 8启动流程
​Basic Input Output System的缩写,翻译过来就是“基本输入输出系统”,是一种业界标准的固件接口,第一次出现在1975年,是计算机启动时加载的第一个程序,主要功能是检测和设置计算机硬件,引导系统启动。
星哥玩云
2022/09/15
2.3K0
CentOS 8启动流程
KVM基础7
现在可以像一台普通服务器一样进行使用了 后面的篇章中再对虚拟机的管理进行详细演示 ---- 修改运行级别 查看当前运行级别 [root@docker ~]# cat /etc/inittab # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. # # Ctrl-Alt-Delete is handled by /usr/lib/sy
franket
2022/01/19
3470
centos 7部署图形化和VNC详解
[root@localhost ~]# systemctl get-default
乡村小男孩
2020/01/27
2.4K1
centos 7部署图形化和VNC详解
相关推荐
在Linux中检查当前运行级别的五种方法?
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文