SysVinit和Systemd的系统运行级别
Linux运行级别
- SysVinit系统(init守护进程)Linux系统运行级别
- SysVinit系统(init守护进程)查看Linux运行级别
- SysVinit系统(init守护进程)修改运行级别:
- Systemd守护进程Linux系统运行级别
- systemd查看运行级别
- Systemd查看系统当前运行级别
- systemd修改运行级别
- `multi-user.target`--文本界面的Linux系统
- `graphical.target`--图形化界面的Linux系统
- 查看`下次启动时`加载文本界面还是图形界面
- 永久设置`下次启动时`加载的默认`target`
- 切换救援与紧急模式
- 关闭/暂停/休眠系统
SysVinit系统(init守护进程)Linux系统运行级别
Linux运行级别 | 解释 | 启动示例 |
---|---|---|
0 | 关机 | init 0 |
1 | 单用户模式,只允许一个用户登录 | init 1 |
2 | 多用户模式,不支持网络工作 | init 2 |
3 | 文本模式,无图形化 | init 3 |
4 | 系统预留 | init4 |
5 | 图形化界面,Linux默认运行级别 | init 5 |
6 | 代表重启模式,不能设置,否则系统反复重启 | init 6 |
SysVinit系统(init守护进程)查看Linux运行级别
init
查看Linux系统运行级别
# init查看系统运行级别,分为0到6
chkconfig —list# 也可以查看系统运行级别
who -r# 或
runlevel
SysVinit系统(init守护进程)修改运行级别:
# 修改运行级别
vim /etc/inittab
Systemd守护进程Linux系统运行级别
Systemd
用目标(target)
替代了运行级别
的概念,提供了更大的灵活性,如您可以继承一个已有的目标, 并添加其他服务,来创建自己的目标。下表列举了Systemd
下的目标(target)
和常见runlevel
的对应关系。
.target文件
是一组systemd units(服务单元)
。用于对 Unit 文件进行逻辑分组,引导其它 Unit 的执行。它替代了 SysV-init
运行级别的作用,并提供更灵活的基于特定设备事件的启动方式.
target
是一个box(盒子)
,装了很多service(服务)
,也可以理解为target
是一组service(服务)
.
tartget
是由服务组成的一类启动目标,systemd可以设置启动目标.
如果systemd指定了一个target
作为启动目标,那么下次启动的时候就会启动target
里面的所有服务
.
SysVinit运行级别
和Systemd
的target
对比:
SysVinit系统(Centos6及以下) | Systemd系统(Centos7及以上) | Systemd下的别名 | 功能描述 |
---|---|---|---|
0 | runlevel0.target | poweroff.target, shutdown.target | 关闭系统。 |
1, s, single | runlevel1.target | rescue.target | 单用户模式,只允许一个用户登录 |
2 | runlevel2.target | multi- user.target | 用户定义/域特定运行级别,不支持网络工作。默认等同于3。 |
3 | runlevel3.target | multi- user.target | 完全多用户(非图形化)模式。 用户可以通过多个控制台或网络登录。 |
4 | runlevel4.target | 保留 | 功能未定义; 同运行级别3 |
5 | runlevel5.target | graphical.target | 多用户,X11(用户图形化界面)。通常为所有运行级别3的服务+图形化登录。 |
6 | runlevel6.target | reboot.target | 重启系统。 |
emergency | emergency.target | 紧急Shell。 |
systemd查看运行级别
Systemd
查看系统上的所有运行级别
# 查看当前系统所有的启动目标
systemctl list-units --type=target
Systemd查看系统当前运行级别
Systemd
兼容SysVinit系统(init守护进程)
的查看运行级别命令
# Systemd查看系统当前运行级别
systemctl get-default
# 结果是文本模式
# SysVinit系统(init守护进程) 兼容命令
# init查看系统运行级别,分为0到6
chkconfig —list
# 也可以查看系统运行级别
who -r
# 或
runlevel
systemd修改运行级别
原理: 链接至对应的运行级别即可
multi-user.target
–文本界面的Linux系统
tty0
和 tty1
默认是图形界面
,临时切换文本界面
后,tty0
和tty1
变成文本界面了
# 永久设置文本界面启动
systemctl set-default multi-user.target# 改变当前系统的目标,重启不保存
# 临时切换到`文本界面`
systemctl isolate multi-user.target
# 需要等待几分钟
graphical.target
–图形化界面的Linux系统
# 改变系统默认的启动目标,重启保存
# 永久设置图形化界面启动
systemctl set-default graphical.target# 改变当前系统的目标,重启不保存
# 临时切换到`图形化界面`
systemctl isolate graphical.target
# 需要等待几分钟
查看下次启动时
加载文本界面还是图形界面
# 查看默认启动的启动目标
# 查看`下次启动时`加载的默认Linux界面`target`
systemctl get-default
永久设置下次启动时
加载的默认target
# 永久改变系统默认的启动目标,重启后依然保持
systemctl set-default ${target名称}
切换救援与紧急模式
# 改变当前系统为救援模式
systemctl rescue
这条命令和“systemctl isolate rescue.target
”类似。命令执行后会在串口
有如下打印信息
:
> You are in rescue mode. After logging in, type "journalctl -xb" to viewsystem logs, "systemctl reboot" to reboot, "systemctl default" or "exit"to boot into default mode.> Give root password for maintenance> (or press Control-D to continue):
# 改变当前系统为紧急模式
systemctl emergency
这条命令和“systemctl isolate emergency.target
”类似。命令执行后会在串口
有如下打印信息
:
> You are in emergency mode. After logging in, type "journalctl -xb" to viewsystem logs, "systemctl reboot" to reboot, "systemctl default" or "exit"to boot into default mode.> Give root password for maintenance> (or press Control-D to continue):
用户需要重启系统
,才能从救援模式
或者紧急模式
进入正常模式
。
关闭/暂停/休眠系统
Systemd
通过Systemctl
命令可以对系统进行关机
、重启
、休眠
等一系列操作。当前仍兼容部分Linux常用管理命令
,对应关系如下表。建议用户使用systemctl
命令进行操作。
Linux常用管理命令 | systemctl命令 | 描述 |
---|---|---|
halt | systemctl halt | 关闭系统但不关闭电源 ) |
poweroff | systemctl poweroff | 关闭系统并关闭电源 |
reboot | systemctl reboot | 重启 |
执行上述命令会给当前所有的登录用户
发送一条提示消息。
# --no-wall 执行关机命令时,禁止systemd通知用户
systemctl --no-wall poweroff
待机
和休眠
# 使系统待机
systemctl suspend# 使系统休眠
systemctl hibernate# 使系统待机且处于休眠状态
systemctl hybrid-sleep