首页 > 其他分享 >RHCE(服务管理和系统启动流程)

RHCE(服务管理和系统启动流程)

时间:2024-03-04 15:55:23浏览次数:22  
标签:systemd 系统启动 服务 service 启动 RHCE 内核 root 流程

一:系统的简介

1:基础

系统启动的时候会运行什么样的程序,什么样的进程什么样的服务,以及得到什么样的桌面,系统开机运行的第一个程序,pid为1,系统的守护进程目的是初始化系统

在rhel7之前,使用init初始化系统

在rhle7之后,使用systemd初始化系统

系统中,如果是d结尾的,那么就表明这是守护进程,在后台一直运行的进程

2:init和systemd区别

1)init属于串行启动,systemd属于并行启动

  a:init从上到下一次启动,如果中间出现了问题,则系统无法启动

  b:systemd按需启动服务,可以一次性同步启动多个服务

2)systemd自动解决服务依赖问题

  a:如果要启动nfs服务,需要先启动rpc-bind mountd,这样就解决了依赖的问题

二:系统的管理(systemctl和systemd)

1:系统单元的管理

在系统中,systemd通过单元来管理不同类型的对象

1)查看系统的服务单元:

也可查看到服务的运行状态,

[root@node1 ~]# systemctl list-units --type service | head -n 5
  UNIT                               LOAD   ACTIVE SUB     DESCRIPTION
  accounts-daemon.service            loaded active running Accounts Service
  atd.service                        loaded active running Deferred execution scheduler
  auditd.service                     loaded active running Security Auditing Service
  avahi-daemon.service               loaded active running Avahi mDNS/DNS-SD Stack 

参数的介绍:
UNIT:服务名

LOAD:是否正确的载入配置文件

ACTIVE:服务的高级状态,一系列进程的状态,服务的最终状态就是他

sub:服务的低级状态,服务进程的状态,exited表示进程已经经历了一次正确的配置载入,等待下一次的运行后,就会变成running

description:服务的描述信息

2)查看系统开机自启的服务

查看服务是否是开机自启的,还有就是服务的默认状态

[root@node1 ~]# systemctl list-unit-files --type 
automount  mount      scope      slice      swap       timer      
device     path       service    socket     target     
[root@node1 ~]# systemctl list-unit-files --type service | head -n 4
UNIT FILE                                  STATE           VENDOR PRESET
accounts-daemon.service                    enabled         enabled
alsa-restore.service                       static          -
alsa-state.service                         static          -

  服务的状态:

    enabled:表示开机自启

    disabled:表示开机不会自启

    static:服务不能自己启动,只能被其他的服务激活启动,nfs服务

    mask:锁定服务,服务不能自己启动,其他服务也不能对其激活启动,mask是为了防止服务之间发生冲突,使用mask对一个服务进行锁定

 

3)管理服务

rhel7之前管理服务与rhel7之后,命令非常不一样

systemctl 动作 服务名称

动作:start,stop,restart,status,reload,enabled,disabled,reload-or-restart(2者之一任选一个),mask(锁定服务),unmask(解锁服务),is-active(服务是否启动的),is-enabled(服务是否开机自启),list-dependencied(查看服务的依赖)

案例:

#查看服务的依赖性
[root@node1 ~]# systemctl list-dependencies httpd | head -n 10
httpd.service
● ├─-.mount
○ ├─httpd-init.service
● ├─system.slice
● └─sysinit.target
●   ├─dev-hugepages.mount
●   ├─dev-mqueue.mount
●   ├─dracut-shutdown.service
○   ├─iscsi-onboot.service


#查看服务是否启动的
[root@node1 ~]# systemctl is-active httpd
active

#查看服务是否开机自启
[root@node1 ~]# systemctl is-enabled httpd
enabled  

2:系统启动目标管理

1:系统启动目标

 系统启动目标就是,系统启动的时候获取什么样的操作界面,也是一种状态,一共0到6个级别,0关机,6重启,5图形化,3是带网络字符页面

系统目标的划分:

graphical.target 图形化的页面

multi-user.target

字符页面

rescue.target 

修复系统页面

 

emergency.targe

 

 修复系统故障的页面

 

2:查看系统启动目标

1)第一种方式,使用runlevel来查看

runlevel可以看到上一次的启动目标和当前的启动目标

[root@node1 ~]# runlevel 
N 5  

 2)第二种方式使用systemctl get-default查看

[root@node1 ~]# systemctl get-default 
graphical.target

  

3:修改系统的启动目标

1)永久修改

systemctl set-default 启动目标

systemctl set-default multi-user.target
reboot

即可,这个就是永久的修改  

2)临时修改

  init 5 切换到图形页面

  systemctl isolate multi-user.target

  在菜单页面选择第一个按e,在linux这一行,ctlrl+e到末尾,然后输入systemd.uni=图形化类型,ctrl+x就进入里面了

下次重启后,还是会会回复到原来的地方

三:系统启动的流程和查看内核

1:系统启动的流程

BIOS:最小化输入输出系统

流程:

1:上电开机

2:BIOS开始自检并且加载硬件

3:BIOS根据启动的顺序选择对应的启动设备

  a:硬盘的,cdrom,网络

4:从硬盘去加载引导代码(引导程序)

  a:引导代码---->>>引导程序--->>>grub2

  b:存放在硬盘的前446个字节(mbr分区的最前面)

5:引导程序加载启动引导分区中配置文件(引导配置文件)

/boot/grub2/grub.cfg

6:grub2会加载内核和initramfs--->>>要挂载根文件系统,然后执行systemd来初始化(启动服务,根据启动目标获取操作页面)

  a:内核不能挂载文件系统,想要挂载文件系统,需要对应的文件系统驱动,需要xfs系列,ext系列

  b:initramfs目的就是为了帮助内核挂载根文件系统,提供文件系统的驱动以及硬件驱动

7:initramfs会执行自己的systemd并且将磁盘上的根文件系统挂载到/sysroot(真正根文件系统挂载到/sysroot)

8:内核就会将initramfs的假根切换为/sysroot(真正的根),然后执行systemd进行初始化系统

9:systemd通过启动目标来得到操作页面(字符页面,图形化页面等)

2:内核参数

1:查看系统的内核

grubby --info=ALL

[root@node1 entries]# grubby --info=ALL
index=0
kernel="/boot/vmlinuz-5.14.0-70.22.1.el9_0.x86_64"
args="ro resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet"
root="/dev/mapper/rhel-root"
initrd="/boot/initramfs-5.14.0-70.22.1.el9_0.x86_64.img"
title="Red Hat Enterprise Linux (5.14.0-70.22.1.el9_0.x86_64) 9.0 (Plow)"
id="ec4c8aea8e734d88b03b86d6af1d1fe5-5.14.0-70.22.1.el9_0.x86_64"
index=1
kernel="/boot/vmlinuz-0-rescue-ec4c8aea8e734d88b03b86d6af1d1fe5"
args="ro resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet"
root="/dev/mapper/rhel-root"
initrd="/boot/initramfs-0-rescue-ec4c8aea8e734d88b03b86d6af1d1fe5.img"
title="Red Hat Enterprise Linux (0-rescue-ec4c8aea8e734d88b03b86d6af1d1fe5) 9.0 (Plow)"
id="ec4c8aea8e734d88b03b86d6af1d1fe5-0-rescue"

 index=0代表着为第一个内核,=1代表着第二个内核参数

查看的就是/boot/loader/entries下面的内核文件

2:查看系统默认内核

grubby --default-kernel

[root@node1 entries]# grubby --default-kernel
/boot/vmlinuz-5.14.0-70.22.1.el9_0.x86_64

 

3:修改默认的内核

1)grubby --set-default 内核路径  也就是/boot下面的内核文件

2)grubby --set-default-index  x(这个x就是grubby --info=ALL显示的index等于几)

 

4:查看内核标题以及修改

1:查看内核标题

grubby --default-title

查看就是/boot/loader/entries这个文件中的标题内容

2:修改内核的标题

一种方法就是:因为查看的就是/boot下面的文件,所以修改下面的文件即可,

修改后,然后重启即可

5:修改内核启动的参数

第一种方法:对配置文件进行修改(永久的修改)

修改/etc/default/grub里面的timeout这个参数,就是设置超时的时间

修改完成后,输入grub2-mkconfig -o /boot/grub2/grub.cfg,重新生成gruub.cfg配置文件

但是把下面有出现了一个新的文件(一致都有的文件)

 

第二种方法:通过grub添加内核的参数(永久修改的)

grubby --args= " systemd.unit=系统的启动目标" --update-kernel /boot/内核文件

也就是写入到了这个内核文件里面去了(/boot/loder/entries下面了)

但是没有写到/etc/default/grub里面去

 

第三种方法:系统启动的时候修改内核参数(临时修改,用的较为多)

1)在启动的界面是按e键,然后在linux末尾添加内核参数,比如systemd.unit=multi-user.target

2)然后按ctrl+x继续启动

常见的内核参数

  1:systemd.unit=multi-user.target

  2:init=/bin/bash

  3:rd.break

 

四:系统故障的管理

标签:systemd,系统启动,服务,service,启动,RHCE,内核,root,流程
From: https://www.cnblogs.com/qm77/p/18049903

相关文章

  • 创建云之家流程
    创建云之家流程一、功能终端不一致时推送信息创建云之家流程二、触发时机​创建​文档时同时满足终端客户是否和现场一致为否​、实际终端客户不为空​、仪器编号不为空​、仪器编号在设备卡片中​会创建流程三、问题修复2024年3月问题修复修改流程名称中的null为“当前......
  • 常见项目管理的全流程
    项目启动阶段:确定项目目标和范围;进行项目可行性研究和商业分析;确定项目的关键要素,如时间、成本、质量和资源等;编制项目章程和项目计划。项目规划阶段:制定详细的项目计划,包括工作分解结构(WBS)、进度计划、资源计划和成本估算等;进行风险评估和管理,制定风险管理计划;确......
  • Java流程控制11:break、continue、goto
    breakcontinue1.break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)2.continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否......
  • Java流程控制10:增强for循环
    增强for循环1.Java5引入了一种主要用于数组或集合的增强型for循环。2.Java增强for循环语法格式如下:3.声明语句:生命新的语句变量,该变量的类型必须和数组元素的类型匹配。起作用域限定在循环语句块,其值与此时数组元素的值相等。4.表达式:表达......
  • MySQL之视图、触发器、存储过程、函数和流程控制
    视图什么是视图视图就是通过查询得到一张虚拟表,然后保存下来,下次可以直接使用其实视图也是表为什么要用视图如果要频繁的操作一张虚拟表(拼表组成的),你就可以制作成视图,后续直接操作如何操作#固定语法createview表名as虚拟表的查询SQL语句#具体操作create......
  • Java流程控制
    Scanner对象Java提供了一个工具类,可以获取用户的输入。java.util.Scanner是Java5的新特征。基本语法:Scannerscanner=newScanner(System.in);使用后关闭:scanner.close();通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前一般需要使用hasNext()与hasNex......
  • 自整理2.23版本下的malloc和free流程
    ''''malloc流程:1.如果处于mmap的范围,直接调用mmap分配2.如果所需分配内存在fastbin的范围里会在fastbin里查找空闲的合适大小的chunk,如找到则结束。3.如果所需分配的内存在smallbin的范围里,就去smallbin里查找,如找到则结束。4.如果所需分配的内存不在smallbin里(也就是大于0x......
  • Java流程控制08:For循环详解
     For循环:条件.for1.虽然所有循环结构都可以用while或者do...while表示,但Java提供了另一种语句----->for循环,使一些循环结构变得更加简单。2.for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环机构。 3.for循环执行的次数是在执行前就确定的......
  • Java流程控制07:DoWhile循环
    DoWhile循环2.do...while循环2.1对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要及时不满足条件,也至少执行一次2.2do...while循环和while循环相似,不同的是,do...while循环至少会执行一次语法:......
  • Java流程控制06:While循环详解
    循环结构1.while循环1.1while循环最基本的循环,它的结构为:1.2只要布尔表达式为true,循环就会一直执行下去1.3大多数情况是会让循环停止下来,我们需要让一个表达式失效的方式来结束循环。1.4少部分情况需要循环一直执行,比如服务器的......