服务管理:很多应用已服务的方式提供,与一般的交互式程序有所区别,开机时自动启动
程序:执行特定任务的一串代码,是静态的,存于硬盘中
进程:运行中的程序叫进程,是动态的,存于内存中
一、Linux操作系统引导过程
1.kernel内核
kernel(操作系统的核心):实现进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能等,内核就是一个文件,一个代码
2.rootfs包括程序和glibc库
程序:二进制执行文件
库:函数集合,function,调用接口(头文件负责描述)
3.内核设计流派
1.宏内核(monolithic kernel):又称单内核和强内核,Unix,Linux把所有系统服务都放到内核里,所有功能集成于同一个程序,分层实现不同功能,系统庞大复杂,Linux其实在单内核内核实现了模块化,也就相当于吸收了微内核的优点
2.微内核(micro kernel):Windows,Solaris,HarmonyOS简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护,每种功能使用一个单独子系统实现,将内核功能移到用户空间,性能差
4.开机启动过程
开机自检bios--->mbr引导--->grub菜单--->加载内核kernel--->init进程初始化启动程序
bios(集成在主板上)
1.开机检测硬件是否有故障
2.指引硬件去哪里找操作系统(根据bios中设置的启动顺序去找操作系统1.本地硬盘2.外接设备3.网卡)
mbr(硬盘)512字节
1.开机引导程序(446字节)
2.分区表(64字节)
grub
根据grub.cfg配置文件找到内核文件,(kernel)加载内核,把内核放入内存中运行
启动程序
1.centos7:启动的第一个程序systemd
2.centos6:启动的第一个程序init
系统初始化进程
先启动systemd或init,再启动其他程序
init:启动其他程序时是串行,123456789依次启动,由Linux内核加载运行/sbin/init程序,init进程是系统中第一个进程,init进程的PID(进程标记)号永远为1
systemd:启动程序时是并行,123456789同时启动,systemd是Linux操作系统的一种init软件,CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit,CentOS7中运行的第一个init进程是/lib/systemd/systemd
5.systemd单元类型
单元类型 | 扩展名 | 说明 |
Service | .service | 描述一个系统服务 |
Socket | .socket | 描述一个进程间通信的套接字 |
Device | .device | 描述一个内核识别的设备文件 |
Mount | .mount | 描述一个文件系统的挂载点 |
Automount | .automount | 描述一个文件系统的自动挂载点 |
Swap | .swap | 描述一个内存交换设备或交换文件 |
Path | .path | 描述一个文件系统中文件或目录 |
Timer | .timer | 描述一个定时器(用于实现类似cron的调度任务) |
Snapshot | .snapshot | 用于保存一个systemd的状态 |
Scope | .scope | 使用systemd的总线接口以编程的方式创建外部进程 |
Slice | .slice | 描述居于Cgroup的一组通过层次组织的管理系统进程 |
Target | .target | 描述一组systemd的单元 |
6.运行级别所对应的systemd目标
运行级别 | Systemd的target | 说明 |
0 | target | 关机状态,使用该级别时将会关闭主机 |
1 | rescue.target | 单用户模式,不需要密码验证即可登陆系统,多用于系统维护 |
2 | multi-user.target | 用户定义/域特定运行级别,默认等同于3 |
3 | multi-user.target | 字符界面的完整多用户模式,大多数服务器主机运行在此级别 |
4 | multi-user.target | 用户定义/域特定运行级别,默认等同于3 |
5 | graphical.target | 图形界面的多用户模式,提供了图形桌面操作环境 |
6 | reboot.target | 重新启动,使用该级别时将会重启主机 |
二、排除启动类故障
故障原因
病毒、木马等造成的破坏
不正确的分区操作、磁盘读写误操作
故障现象
找不到引导程序,启动中断
无法加载操作系统,开机后黑屏
解决思路
应提前做好备份文件
以安装光盘引导进入急救模式
从备份文件中恢复
1.修复mbr扇区故障
1.添加新硬盘,lsblk查看新加硬盘sdb、sdc、sdd
2.分区,命令格式:fdisk /dev/sdb
3.查看,一会和故障后的做对比,命令格式:hexdump -C -n 512 /dev/sda
4.新建eva文件夹作为挂载点和备份点
5.格式化sdb1分区并挂载到/eva下
6.备份MBR扇区数据到新硬盘的分区
7.备份成功
8.我们模拟故障先破坏MBR扇区,用空字符替换,模拟MBR扇区故障
9.现在用hexdump -C -n 512 /dev/sda查看现在故障后的MBR扇区
10.重启虚拟机
11.回到虚拟机,进入紧急模式,用备份文件恢复MBR扇区数据,解决故障
12.选择紧急模式
13.选择1.continue,按下回车
14.新建esdeath文件夹
15.将有备份文件的硬盘挂载到新建目录
16.将之前备份的文件复制到出现MBR故障的磁盘
17.在命令行输入exit,退出急救模式并重启,MBR引导正常启动,可以选择操作系统
18.可以正常登录,MBR故障修复成功
2.修复grub引导故障
故障原因:
1.MBR中的GRUB引导程序遭到破坏
2.grub,cfg文件丢失、引导配置有误
修复grub引导故障
1.切换到grub配置文件所在目录
2.删除配置文件grub,cfg
3.reboot重启
4.无法登录
5.重启虚拟机,出现这个界面的时候迅速按esc进入启动菜单
6.选择光盘启动,引导界面进入急救模式
7.选择Troubleshooting
8.选择急救模式
9.光标输入1,继续
10.切换到/mnt/sysimage
11.重新建立加载sda分区
12.重新构建grub菜单配置文件
13.退出引导界面,reboot重启,查看是否可以选择操作系统
14.可以选择操作系统
15.可以登录
修复成功
3.模拟修改root密码
1.在选择系统界面按e进入编辑界面
2.添加一个内核参数rd.break
3.修改根目录的权限并重新挂载
4.创建一个临时的根文件系统环境,使在此环境中运行的程序只能访问到这里,切换新命令行
5.关闭selinux,修改root用户的密码,并且再次确认密码
6.退出临时环境并重启
7.登录用户root
登录成功
三、服务控制及切换运行级别
运行级别(runlevel):系统的工作状态,定义了系统启动时运行的服务和进程,init0-6可以切换到对应的运行级别
1.运行级别0(halt)
系统关机状态,所有服务已停止,可以安全地关闭电源
2.运行级别1(single user mode)
单用户模式,只有boot用户可以登录,用于系统修复和维护
3.运行级别2(multi-user mode)
文本模式多用户模式,登录后进入命令行界面,功能不全的字符界面
4.运行级别3(full multi-user mode)
文本模式多用户模式,登录后进入命令行界面,完整的字符界面
5.运行级别4(unused)
保留,未分配特定用途,可以根据需要进行自定义
6.运行级别5(graphical multi-user mode)
图形多用户模式,登陆后进入图形界面
7.运行级别6
重启
四、sysremd程序管理-systemctl
1.服务程序
为其他机器提供服务的程序,服务程序启动后,会持续监听端口。
使用systemctl 命令管理systemd服务。
1.系统必要的程序
2.yum,rpm安装的程序
3.编译安装的程序,需要手写配置文件后才可以
/usr/lib/systemd/system/服务名.service的文件
yum和rpm安装会自动生成,天生可以被systemd管理,而编译不行,编译需要手写该文件
systemd进行管理的时候使用的是systemctl命令
开始服务命令格式:systemctl start 服务名
关闭服务命令格式:systemctl stop 服务名
查看服务状态命令格式:systemctl status 服务名
重启服务命令格式:systemctl restart 服务
重新加载服务,不影响用户使用命令格式:systemctl reload 服务
开机自启命令格式:systemctl enable 服务
关闭开机自启命令格式:systemctl disable 服务
开机自启,并立即启动命令格式:systemctl enable --now
关闭开机自启,并立即关闭命令格式:systemctl disable --now
关闭防火墙:systemctl stop firewalld永久关闭:setenforce 0
2.service unit文件格式
1.unit
主要用来描述此软件的功能、man帮助、依赖关系等
2.service
主要作用是systemd程序怎么具体管理该程序(如何启动该程序,如何关闭该配置,怎么优化该程序的配置)
3.lnstall
在哪个运行级别启动