0
点赞
收藏
分享

微信扫一扫

关于菜鸡学习RHEL8的一些小笔记--->服务管理&&系统启动流程

服务管理与系统启动流程:

操作系统启动时运行的第一个程序:

在 RHEL7 之前,使用 init (pid=1)来初始化系统;

init 是系统的初始化进程,也是整个系统的第一个用户空间进程。它是由内核启动的,负责启动并管理系统中的其他进程。

从 RHEL7 开始,使用 Systemd (pid=1)来初始化系统;

与init类似Systemd 是一种用于启动、管理和控制 Linux 系统上的进程的系统和服务管理器。

systemd 对比 init 的优势:

1、启动速度比init会更快Systemd 使用的是并行启动的的方式,所以可以同时启动多个服务,从而提高启动速度。但是,传统的 init 启动方式为串行启动,所以从速度上是较低与Systemd。

2、服务依赖关系处理的更好:init 本质上来说是系统初始化的一个脚本文件,系统中所有要运行的程序都会放在这个脚本当中,那么init 在启动的时候都会将脚本文件中的每一行都去执行,所以如果其中需要启动的某项服务出现了问题(init 中某项条目出现了故障),系统就会一直卡在这里,出现开不了机的现象;而systemd 则是通过单元的方式进行管理,可以理解为积木==》按需激活,自动依赖。

3、自动故障恢复:为了保障系统的稳定,Systemd 可以监控系统中的服务和进程,并且在服务启动失败时自动再次重启服务以及其相关依赖。

Systemd 会使用不同的单元来管理不同的类型对象,常见单元类型如下

类型

文件扩展名

解释

Service unit

.service

定义系统服务

Target unit

.target

模拟运行级别

Device unit

.device

定义内核识别的设备

Mount unit

.mount

定义文件系统挂载点

Socket unit

.socket

用于标识进程间通信

Swap unit

.swap

用于管理swap设备

Automount unit

.automount

用于实现文件系统自动挂载

Path unit

.path

定义文件系统的文件和目录

例如查看系统上的设备:

systemctl list-units --type device

关于菜鸡学习RHEL8的一些小笔记--->服务管理&&系统启动流程_运行级别

使用systemd管理服务:

示例:查看systemd服务解析并加载到内存中的单元,不显示已安装但未启用的服务:

systemctl list-units --type service

关于菜鸡学习RHEL8的一些小笔记--->服务管理&&系统启动流程_Red Hat_02

#注:在查看的服务列表中 ACTIVE 和 SUB 均为服务的状态;

ACTIVE ==》服务的高级状态 ==》服务的总状态,表示服务是否在系统中运行

SUB ==》服务的低级状态 ==》 服务进程的状态,例如 nfs 服务,进程属于休眠状态,等待被激活的场景,并非时时刻刻在运行

总结:服务的状态是由active来决定的,并非SUB来决定

锁死服务(使用场景:一般在服务之间发生冲突时,为了避免冲突的服务引起故障,将某一个服务彻底屏蔽所使用):

systemctl mask httpd.service

#锁死状态的服务无法启动,也无法被其他服务拉活

解锁:

systemctl unmask httpd.service

注:其实要理解锁死服务与解锁服务很简单,如下图所示

关于菜鸡学习RHEL8的一些小笔记--->服务管理&&系统启动流程_Red Hat_03

关于菜鸡学习RHEL8的一些小笔记--->服务管理&&系统启动流程_初始化_04

由上图可以看出,通过mask锁定服务其实就是将/etc/systemd/system/httpd.service 软连接指向了linux中的/dev/null(无底洞),使该服务彻底无法启动,而解锁实际就是将这条软连接删除 ;

systemctl 常用命令:

systemctl start NAME.service #启动服务

systemctl stop NAME.service #停止服务

systemctl restart NAME.service #重启服务

systemctl reload NAME.service #重新加载配置文件但是不会重启服务

systemctl reload-or-restart NAME.service #如果你不确定服务是否有重新加载配置文件的功能,可以用 reload-or-restart 如果支持加载就会使用 reload 如果不支持则会 restart 

systemctl enable NAME.service #服务开机自启

systemctl disable NAME.service #禁用服务开机自启

systemctl enable --now NAME.service #将服务设置为开机自启,并且当前立即启动;

与其反之的命令则为: systemctl disable --now NAME.service

systemctl list-dependencies NAME.service #列出服务的依赖关系

systemctl status NAME.service #查看服务的状态(开机运行的状态)

systemctl is-enable NAME #查询服务的开机状态

systemctl is-active NAME #查询服务的当前状态

systemd 启动目标:

在Red Hat 7系统中init拥有运行级别的概念:

系统共有7个运行级别:0-6 ,其中较为常见的例如 0级别 关机 ,6级别 重启 ,3级别 带网络的字符界面, 5级别 图形化界面 (需要使用init切换)

runlevel #查看当前运行级别

而在Red Hat 8 系统中则称之为运行目标:

target类型

描述

graphical.target

系统支持多用户,图形和基于文本的登陆

multi-user.target

系统支持多用户,基本文本的登陆

tescue.target

系统初始化已完成,需要root账户登陆

emergency.target

只读挂载根文件系统,需要root账户登陆

systemctl get-default #查看当前是什么模式

示例开机启动字符界面:

systemctl set-default multi-user.target

举报

相关推荐

0 条评论