作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
这是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 为例,关机过程通常有以下步骤:
一、用户发起关机指令
- 用户可以通过以下方式发起关机指令:
-
使用命令行:例如,运行 "shutdown -h now"、"poweroff" 或 "init 0" 等命令。这些命令会通知系统进行关机操作。
-
通过图形界面:在桌面环境中,用户可以选择关机选项,这通常会触发相应的系统关机程序。
二、系统响应关机指令
-
内核接收到关机信号:当用户发起关机指令后,系统会将这个信号传递给内核。内核开始准备关闭系统。
-
停止服务和进程:
-
内核会向所有正在运行的进程发送信号,通知它们系统即将关闭。进程可以在接收到信号后进行一些清理工作,如保存数据、释放资源等。
-
系统会按照一定的顺序停止各种服务,如网络服务、文件系统服务、打印服务等。这通常是由初始化系统(如 systemd)来管理的。
三、卸载文件系统和设备
-
内核会通知文件系统将缓存中的数据写入磁盘,以确保数据的完整性。
-
系统会卸载所有已挂载的文件系统,包括本地文件系统和网络文件系统。
-
内核会停止对硬件设备的访问,并卸载设备驱动程序。
四、关闭系统
-
当所有的服务和进程都已停止,文件系统都已卸载,设备都已关闭后,内核会执行最后的关机操作。
-
如果是正常关机,系统会将电源管理系统设置为关机状态,计算机的电源将被关闭。
关机一般不会遇到问题,当然在实际运维中,我是遇到过无法关机,必须强制关机的情况,但是这个没有模拟出来故障。
总结
-
在运维中会出现一种情况,应用系统重启前都运行得好好的,重启以后业务运行就开始出现问题,这种情况主要是一些修改在重启后生效,而这个修改可能已经修改了很久,连自己都忘记。
-
在运维中,有些问题确实会通过重启解决,但是这个操作还是要慎重,对生产环境要有敬畏之心。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。