Linux 基础 | 青训营笔记

37 阅读8分钟

课程介绍

学习Linux的价值

  • Linux 是现代化应用程序交付的首选平台,无论是部署在裸机、虚拟化还是容器化环境
  • 公司内部服务(TCE、FaaS、SCM)统一使用Debian Linux系统
  • 熟悉Linux基础指令,熟练运维前端常用服务(Nginx,Node.js)
  • 加深对操作系统概念和实现的理解,夯实基础知识

Linux为什么选择企鹅作为Logo?

企鹅是南极洲的标志性动物,根据国际公约,南极洲为全人类共同所有,不属于当今世界上任何国家,Linux选择企鹅图案作为标志。其含义也是表明:开源的Linux,为全人类共同所有,任何公司无权将其私有。

image.png

Step 1 计算机硬件

计算机由五大基本单元组成

  • 控制器
  • 运算器
  • 存储器单元
  • 输入单元
  • 输出单元

image.png

用户通过操作系统控制输入设备输入信息,操作系统通过调用运算器、存储器和控制器来将反馈的结果在输出设备上输出给用户。

Step 2 操作系统

操作系统 | Opereating System - OS 管理和控制计算机系统的硬件和软件资源,用于在用户与系统硬件之间传递信息。

image.png 现存流行的操作系统包括:iOS苹果手机操作系统 Linux Windows Android HarmonyOS等等

操作系统启动流程

image.png 操作系统一般分为两类:

  • 一种是基于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 发展简史

  1. 1969年,Unix生于贝尔实验室
  2. 1984年,贝尔实验室将Unix商业化
  3. 1984年,Tanenbaum 开发 Minix操作系统用于教学并开放源码
  4. 1984年,Richard M. Stallman 发起自由软件(FSF)与GNU项目,起草GPL(通用公共许可)协议
  5. 1991年,Linus Torvalds受Minux影响实现出版Linux内核
  6. 1992年,Linux内核以GPL协议发行V1.0

Linux 版本

  • 内核版本
    • Linux作者本人去维护的版本,是操作系统的核心,它提供了进程管理、内存管理、文件系统管理以及硬件资源管理等一系列能力
  • 发行版本
    • Linux发行版本 = Linux内核 + 常用的软件

主流的Linux版本

image.png

查看Linux系统的内核版本

# 方法1
uname -a
# 方法2
cat /proc/version

image.png

这两个命令都可以查看Linux操作系统的内核版本信息


cat /etc/os-release

image.png 这个命令可以帮助外卖查看Linux是哪个发行版本的

Linux 系统应用领域

  • IT服务器(操作系统、虚拟化和云计算)
  • 嵌入式和智能设备
  • 个人办公桌面
  • 学术研究与软件开发

Step 4 Linux 基本组成

Linux 系统一般有4个主要部分

  • 内核
    • 负责管理系统底层的一些功能,例如内存管理、进程管理等等
  • shell
    • shell命令,用来向Linux内核进行一些交互从而达到管理Linux系统内部的一些文件等资源的目的
  • 文件系统
    • 负责管理持久数据的子系统,用来负责把用户的文件存到磁盘里面去
  • 应用程序
    • 运行在Linux操作系统之上的应用程序,例如开发Java使用的IDEA、用来浏览Web网站的firefix浏览器等等

image.png

Linux 体系结构

image.png

操作系统的体系结构主要分为用户空间与内核空间。

  • 用户空间:
    • 应用程序
    • C Library即已经封装好的系统标准调用库
  • 内部空间:
    • 系统调用层
    • 内核代码
    • 平台架构相关的代码

Linux划分用户空间和内核空间,主要是为了隔离内核与用户,内核拥有所有的资源调用和使用权,但是用户只能使用部分能够看到的资源。两者的划分保证了应用程序崩溃时,内核依旧能够运行,保障了Linux的系统稳定性

那么应用程序是如何与底层硬件进行交互的呢?
-> 当应用程序正常运行时,会处于用户态,相当于在用户空间中,权限受限。当应用程序需要调用底层硬件,那么应用程序会向 C Library发送请求调用,此时应用程序就会切换为内核态,拥有最高权限。当使用完硬件资源之后,应用程序又会切换为用户态。

内核的总结

  • 内核是硬件与软件之间的中间层
  • 内核是一个资源管理程序
  • 内核提供一组面向系统的命令

内核漫画

image.png

查看文件系统类型

# df 命令报告文件系统磁盘空间利用率
df -T
# mount 命令是挂载文件系统用的,不带任何参数运行,会打印包含文件系统类型在内的磁盘分区的信息
mount

image.png

文件基本操作

ls # 查看文件夹下内容

mkdir demo # 创建文件夹

move demo /home # 移动demo文件到/home

rm -r demo # 删除demo文件夹

touch file.txt # 创建空文件

cp file.txt file_bak.txt # 复制文件

文件读取流程

image.png

  • 读:
    • 首先应用程序会在用户进程里面的用户缓冲区中去寻找目标文件。如果有就会直接在用户缓冲区读文件;如果没有找到,就会发送一次系统调用
    • 发起了系统调用之后,首先应用程序切换到内核态,然后进入到内核缓冲区寻找目标文件,如果有就会从内核缓冲区中通过CPUcopy到用户缓冲区给用户进程使用;如果没有就会进一步访问磁盘
    • 访问磁盘使用的是直接存储访问DMA从磁盘里面发起读取的请求,然后应用程序进程会将文件copy到内核缓冲区,再向CPU发送指令将文件copy到用户缓冲区,用户进程再从用户缓冲区进行读取
  • 写:
    • 用户进程发起系统调用,通过CPU将文件copy到Socket 缓冲区
    • 通过DMA将文件copy到网卡最终反馈给用户

Linux提出缓冲区主要是为了减少系统调用的次数,达到集中调用的目的,提高系统的性能

Linux系统结构 ——用户权限

用户账户

  • 用户账户
    • 普通用户账户:在系统中进行普通作业
    • 超级用户账户:在系统中对普通用户和整个系统进行管理
  • 组账户
    • 标准组:可以容纳多个用户
    • 私有组:只有用户自己

查看用户信息

image.png

# 查看当前登录用户信息
w

# 查看当前用户所属的组
groups

# 查看用户的uid信息
id xxxx

文件权限

文件权限关于用户的三个概念:

  • 所有者:文件的所有者
  • 所在组:文件的所有者所在的组
  • 其他人:除文件所有者及所在组外的其他人

每个用户对于文件都有不同的权限,包括读R、写W、执行X

image.png

用户权限操作

# 在根目录创建一个文件夹,查看当前用户拥有文件夹的权限
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

底层工具很多的繁琐的软件安装包安装和删除都必须我们自己去做,上层工具则是相当于集成了一部分底层工具功能,实现半自动化

软件包管理工具

  • RPMRed Hat Pakage Manager,为Red hat 操作系统的包管理工具
  • DPKGDebian package,为Debian操作系统的包管理系统

image.png

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

image.png 镜像地址:mirrors.aliyun.com/
/dists:查看系统代号
/pool :查看软件分支