课程介绍
学习Linux的价值
- Linux 是现代化应用程序交付的首选平台,无论是部署在裸机、虚拟化还是容器化环境
- 公司内部服务(TCE、FaaS、SCM)统一使用Debian Linux系统
- 熟悉Linux基础指令,熟练运维前端常用服务(Nginx,Node.js)
- 加深对操作系统概念和实现的理解,夯实基础知识
Linux为什么选择企鹅作为Logo?
企鹅是南极洲的标志性动物,根据国际公约,南极洲为全人类共同所有,不属于当今世界上任何国家,Linux选择企鹅图案作为标志。其含义也是表明:开源的Linux,为全人类共同所有,任何公司无权将其私有。
Step 1 计算机硬件
计算机由五大基本单元组成
- 控制器
- 运算器
- 存储器单元
- 输入单元
- 输出单元
用户通过操作系统控制输入设备输入信息,操作系统通过调用运算器、存储器和控制器来将反馈的结果在输出设备上输出给用户。
Step 2 操作系统
操作系统 | Opereating System - OS
管理和控制计算机系统的硬件和软件资源,用于在用户与系统硬件之间传递信息。
现存流行的操作系统包括:iOS
苹果手机操作系统
Linux
Windows
Android
HarmonyOS
等等
操作系统启动流程
操作系统一般分为两类:
- 一种是基于BIOS去引导操作系统启动的传统方式
- 另一种是目前主流的基于UEFI引导操作系统启动的方式
不论是BIOS还是UEFI都是相当于固化在主板上的一段程序。当计算机开机时,会解析和执行这段程序去完成初始化的一个动作,然后这个程序会去loader,在找到Bootloadder之后就会启动OS
BIOS 和 UEFI的区别: UEFI相当于是BIOS的一个优化,BIOS会有一个BIOS自检的过程,这大大降低了操作系统启动的速度。
BIOS默认和MBR这种磁盘分区模式,这就导致BIOS无法去启动2.2T容量,UEFI一般会和盘分区模式进行配合,可以启动大于2.2T以上容量的磁盘。
Step 3 Linux 系统概览
Linux 发展简史
- 1969年,
Unix
生于贝尔实验室 - 1984年,贝尔实验室将Unix商业化
- 1984年,Tanenbaum 开发
Minix
操作系统用于教学并开放源码 - 1984年,Richard M. Stallman 发起自由软件(FSF)与GNU项目,起草GPL(通用公共许可)协议
- 1991年,Linus Torvalds受Minux影响实现出版Linux内核
- 1992年,Linux内核以GPL协议发行V1.0
Linux 版本
- 内核版本
- 由Linux作者本人去维护的版本,是操作系统的核心,它提供了进程管理、内存管理、文件系统管理以及硬件资源管理等一系列能力
- 发行版本
- Linux发行版本 = Linux内核 + 常用的软件
主流的Linux版本
查看Linux系统的内核版本
# 方法1
uname -a
# 方法2
cat /proc/version
这两个命令都可以查看Linux操作系统的内核版本信息
cat /etc/os-release
这个命令可以帮助外卖查看Linux是哪个发行版本的
Linux 系统应用领域
- IT服务器(操作系统、虚拟化和云计算)
- 嵌入式和智能设备
- 个人办公桌面
- 学术研究与软件开发
Step 4 Linux 基本组成
Linux 系统一般有4个主要部分
- 内核
- 负责管理系统底层的一些功能,例如内存管理、进程管理等等
- shell
- shell命令,用来向Linux内核进行一些交互从而达到管理Linux系统内部的一些文件等资源的目的
- 文件系统
- 负责管理持久数据的子系统,用来负责把用户的文件存到磁盘里面去
- 应用程序
- 运行在Linux操作系统之上的应用程序,例如开发Java使用的IDEA、用来浏览Web网站的firefix浏览器等等
Linux 体系结构
操作系统的体系结构主要分为用户空间与内核空间。
- 用户空间:
- 应用程序
- C Library
即已经封装好的系统标准调用库
- 内部空间:
- 系统调用层
- 内核代码
- 平台架构相关的代码
Linux划分用户空间和内核空间,主要是为了隔离内核与用户,内核拥有所有的资源调用和使用权,但是用户只能使用部分能够看到的资源。两者的划分保证了应用程序崩溃时,内核依旧能够运行,保障了Linux的系统稳定性。
那么应用程序是如何与底层硬件进行交互的呢?
-> 当应用程序正常运行时,会处于用户态,相当于在用户空间中,权限受限。当应用程序需要调用底层硬件,那么应用程序会向 C Library发送请求调用,此时应用程序就会切换为内核态,拥有最高权限。当使用完硬件资源之后,应用程序又会切换为用户态。
内核的总结:
- 内核是硬件与软件之间的中间层
- 内核是一个资源管理程序
- 内核提供一组面向系统的命令
内核漫画
查看文件系统类型
# df 命令报告文件系统磁盘空间利用率
df -T
# mount 命令是挂载文件系统用的,不带任何参数运行,会打印包含文件系统类型在内的磁盘分区的信息
mount
文件基本操作
ls # 查看文件夹下内容
mkdir demo # 创建文件夹
move demo /home # 移动demo文件到/home
rm -r demo # 删除demo文件夹
touch file.txt # 创建空文件
cp file.txt file_bak.txt # 复制文件
文件读取流程
- 读:
- 首先应用程序会在用户进程里面的
用户缓冲区
中去寻找目标文件。如果有就会直接在用户缓冲区读文件;如果没有找到,就会发送一次系统调用
- 发起了系统调用之后,首先应用程序切换到内核态,然后进入到
内核缓冲区
寻找目标文件,如果有就会从内核缓冲区中通过CPU
copy到用户缓冲区给用户进程使用;如果没有就会进一步访问磁盘 - 访问磁盘使用的是直接存储访问
DMA
从磁盘里面发起读取的请求,然后应用程序进程会将文件copy到内核缓冲区,再向CPU发送指令将文件copy到用户缓冲区,用户进程再从用户缓冲区进行读取
- 首先应用程序会在用户进程里面的
- 写:
- 用户进程发起系统调用,通过CPU将文件copy到
Socket 缓冲区
- 通过DMA将文件copy到网卡最终反馈给用户
- 用户进程发起系统调用,通过CPU将文件copy到
Linux提出缓冲区主要是为了减少系统调用的次数,达到集中调用的目的,提高系统的性能。
Linux系统结构 ——用户权限
用户账户
- 用户账户
- 普通用户账户:在系统中进行普通作业
- 超级用户账户:在系统中对普通用户和整个系统进行管理
- 组账户
- 标准组:可以容纳多个用户
- 私有组:只有用户自己
查看用户信息
# 查看当前登录用户信息
w
# 查看当前用户所属的组
groups
# 查看用户的uid信息
id xxxx
文件权限
文件权限关于用户的三个概念:
- 所有者:文件的所有者
- 所在组:文件的所有者所在的组
- 其他人:除文件所有者及所在组外的其他人
每个用户对于文件都有不同的权限,包括读R
、写W
、执行X
用户权限操作
# 在根目录创建一个文件夹,查看当前用户拥有文件夹的权限
cd / && mkdir demo && ls -ld demo
sudo useradd ceshi # 创建一个用户,并赋予可写操作
sudo passwd ceshi #设置用户密码
su ceshi # 切换ceshi用户登录
cd demo # 进入demo文件夹
touch index.js # 创建index.js文件,提示无权限,需要给ceshi用户demo文件夹的权限
sudo chown -R ceshi:ceshi ./demo # demo文件夹权限给ceshi用户
su ceshi # 切换用户登录
cd demo # 进入demo文件夹
touch index.js # 创建index.js文件成功
Step 5 软件包
软件包
通常指的是一个应用程序,它可以是一个GUI应用程序、命令行工具或(其他软件程序需要的)软件库
软件包管理
底层工具:主要用来处理安装和删除软件包文件等任务,DPKG,RPM 上层工具:主要用于数据的搜索任务和依赖解析任务,APT,YUM,DNF
底层工具很多的繁琐的软件安装包安装和删除都必须我们自己去做,上层工具则是相当于集成了一部分底层工具功能,实现半自动化
软件包管理工具
- RPM
Red Hat Pakage Manager
,为Red hat 操作系统的包管理工具 - DPKG
Debian package
,为Debian操作系统的包管理系统
Debian APT 常用命令
- 列出所有可更新的软件清单命令
apt update
- 安装指定的软件命令
apt install <package_name>
- 安装多个软件包
apt install <package_1> <package_2> <package_3>
- 更新指定的软件命令
apt update <package_name>
- 删除软件包命令
apt remove <package_name>
- 查找软件包命令
apt search <keyword>
- 列出所有已安装的包
apt list --installed
Debian 配置软件源
通常Debian系的Linux软甲按源配置文件:
/etc/apt/sources.list
镜像地址:mirrors.aliyun.com/
/dists
:查看系统代号
/pool
:查看软件分支