Linux系统-开关机

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

这是Linux进阶部分的最后一大章。讲完这一章以后,我们Linux进阶部分讲完以后,我们的Linux操作部分就算讲完了,后面的讲解就主要是Linux上的应用软件的讲解,包括虚拟化,容器,云原生,数据库,中间件等。Linux系统相关内容,主要从以下几个方面来讲解:

Linux系统-开关机(本章节)

Linux系统-单用户模式

Linux系统-救援模式

Linux系统-僵尸&孤儿进程

Linux系统-systemd

Linux系统-logrotate

Linux系统-发行版介绍

Linux系统-发行版rocky

Linux系统-发行版ubuntu

Linux系统-初始化

为什么一个开关机也要单独拿出来讲解呢,因为有不少运维问题是发生在开关机阶段,所以我们需要了解Linux开关机的都做了些啥操作。

开机

在 Linux 系统中,启动过程主要有以下六个阶段:

开机自检(BIOS/UEFI)

  • 当你打开计算机电源时,首先由基本输入输出系统(BIOS)或统一可扩展固件接口(UEFI)进行硬件自检。这个阶段会检查硬件设备是否正常工作,如内存、硬盘、显卡等,并初始化硬件设备。如果发现硬件故障,系统会发出相应的错误提示。

  • 你可以理解bios会告诉你从哪块硬盘或者其他介质启动(比如通过impi配置的cdrom)。

加载引导程序(Boot Loader)

  • 自检完成后,BIOS/UEFI 会根据设置的启动顺序,查找可引导设备(如硬盘、U 盘、光盘等)上的引导程序。常见的引导程序有 GRUB(Grand Unified Bootloader)等。引导程序的作用是加载操作系统内核,并将控制权交给内核。

  • 可以简单里面这里可以选择进入什么内核或者什么模式。

内核初始化(Kernel Initialization)

  • 引导程序将内核加载到内存中后,内核开始初始化。内核会检测硬件设备、初始化设备驱动程序、建立内存管理系统、创建进程管理系统等。这个阶段是系统启动的核心部分,决定了系统的稳定性和性能。

运行 init 进程(Init Process)

  • 内核初始化完成后,会启动第一个用户空间进程 ------init 进程。init 进程是系统所有进程的祖先,它的主要任务是根据系统的运行级别启动相应的服务和应用程序。不同的 Linux 发行版可能使用不同的 init 系统,如 System V init、Upstart 和 systemd。

系统初始化(System Initialization)

  • 根据 init 进程的配置,系统会启动各种服务和应用程序,如网络服务、文件系统服务、打印服务等。这个阶段还会执行一些系统初始化脚本,如 /etc/rc.d/rc.local 等,以完成一些特定的系统配置任务。

  • 我们配置的磁盘自动挂载,一些开机启动的服务将在这个阶段完成。

### 用户登录(User Login)
  • 系统初始化完成后,系统会启动登录管理器,等待用户登录。用户可以通过图形界面或命令行方式登录系统。登录成功后,用户可以开始使用系统,运行各种应用程序和命令。

  • 当然这个阶段并不是必须的

我们在讲Linux磁盘-开机启动的时候说过,如果错误的配置fstab,则会导致系统无法开机;如果所以需要使用mount -a 或者重启方式来验证磁盘的开机自动挂载是否正确,配置开机启动的时候最好用uuid,因为在多磁盘的机器,如果磁盘故障,重启以后磁盘的盘符是会发生改变的。

开机常见故障

1.找不到引导盘

比如我的系统安装在a硬盘,而我在bios里面配置了b盘作为启动盘,可以通过带外操作bios或者直接操作bios进行调整修复,如果是重装或者新安装系统,也是在这里选择引导盘。

2.引导盘故障

比如某些误操作删除了系统关键文件,或者磁盘文件系统损坏。以下故障是我手工删除了/etc目录和/bin目录重启失败的情况,修复方法参考后面会讲的Linux系统-救援模式

3.磁盘挂载失败

错误的fstab是常见的系统无法启动的原因之一

输入root密码进入系统修复磁盘挂载问题。

关机

为什么关机也要拿来单独讲呢,因为关机命令有多个,我们需要了解在Linux关机命令执行以后,系统做了哪些操作。

在 Linux 系统中,以 CentOS 为例,关机过程通常有以下步骤:

一、用户发起关机指令

  1. 用户可以通过以下方式发起关机指令:
  • 使用命令行:例如,运行 "shutdown -h now"、"poweroff" 或 "init 0" 等命令。这些命令会通知系统进行关机操作。

  • 通过图形界面:在桌面环境中,用户可以选择关机选项,这通常会触发相应的系统关机程序。

二、系统响应关机指令

  1. 内核接收到关机信号:当用户发起关机指令后,系统会将这个信号传递给内核。内核开始准备关闭系统。

  2. 停止服务和进程:

  • 内核会向所有正在运行的进程发送信号,通知它们系统即将关闭。进程可以在接收到信号后进行一些清理工作,如保存数据、释放资源等。

  • 系统会按照一定的顺序停止各种服务,如网络服务、文件系统服务、打印服务等。这通常是由初始化系统(如 systemd)来管理的。

三、卸载文件系统和设备

  1. 内核会通知文件系统将缓存中的数据写入磁盘,以确保数据的完整性。

  2. 系统会卸载所有已挂载的文件系统,包括本地文件系统和网络文件系统。

  3. 内核会停止对硬件设备的访问,并卸载设备驱动程序。

四、关闭系统

  1. 当所有的服务和进程都已停止,文件系统都已卸载,设备都已关闭后,内核会执行最后的关机操作。

  2. 如果是正常关机,系统会将电源管理系统设置为关机状态,计算机的电源将被关闭。

关机一般不会遇到问题,当然在实际运维中,我是遇到过无法关机,必须强制关机的情况,但是这个没有模拟出来故障。

总结

  1. 在运维中会出现一种情况,应用系统重启前都运行得好好的,重启以后业务运行就开始出现问题,这种情况主要是一些修改在重启后生效,而这个修改可能已经修改了很久,连自己都忘记。

  2. 在运维中,有些问题确实会通过重启解决,但是这个操作还是要慎重,对生产环境要有敬畏之心。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

相关推荐
朝九晚五ฺ2 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
自由的dream2 小时前
Linux的桌面
linux
xiaozhiwise3 小时前
Makefile 之 自动化变量
linux
Kkooe3 小时前
GitLab|数据迁移
运维·服务器·git
久醉不在酒4 小时前
MySQL数据库运维及集群搭建
运维·数据库·mysql
意疏5 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker
虚拟网络工程师5 小时前
【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)
运维·服务器·网络·数据库·mariadb
BLEACH-heiqiyihu5 小时前
RedHat7—Linux中kickstart自动安装脚本制作
linux·运维·服务器
一只爱撸猫的程序猿5 小时前
一个简单的Linux 服务器性能优化案例
linux·mysql·nginx