Linux 基础 | 青训营笔记

108 阅读5分钟

前言:学习Linux的价值

  • 应用程序交付的首选平台
  • 公司内部服务统一使用Debian Linux系统
  • 运维前端常用服务
  • 加深对操作系统概念和实现的理解

计算机硬件

计算机组成部分:控制器+运算器=CPU,存储器单元,输入单元,输出单元。

计算机操作系统(Operating System,OS)

管理计算机资源;提供用户接口。

主流:macOS,Linux,windows,android,harmonyOS

操作系统启动:BIOS&UEFI 固化在主板上的一段程序,找到并运行Bootloader(操作系统引导程序),由Bootloader运行OS,OS启动完成。

BIOS(配合MBR磁盘分区无法引导启动2.2T以上磁盘)-升级优化->UEFI(配合GPT分区模式,可以引导启动2.2T以上磁盘) 性能和加载速度提升。

Linux系统概览

发展简史

Linux版本

  • 内核版本:核心,内存管理,文件系统管理等底层能力。
  • 发行版本:内核版本+常用软件。

如何查看Linux版本:

  1. uname -a查看内核版本
  2. cat /proc/version查看内核版本
  3. cat /etc/os-release查看发行版本

Linux系统应用领域

  • IT服务器
  • 嵌入式和智能设备(android)
  • 个人办公桌面
  • 学术研究和软件研发

系统结构

基本组成

  • 内核:提供核心能力。
  • shell:命令解释器,用户可以使用shell进行与内核的交互。
  • 文件系统:用户文件存到磁盘硬件中。
  • 应用程序:linux上运行的程序。

体系结构

  • 用户空间:应用程序,C Library-封装好的系统标准调用库。
  • 内核空间:系统调用层,内核模块代码,平台架构相关代码。

应用程序如何与硬件系统通信:用户发起IO请求(系统调用)-->应用程序从用户态(应用程序默认在用户空间)-用户请求(底层用C Library发起系统调用)->内核态(内核代表程序运行在内核空间) --> 恢复成用户态

内核总结:

  • 硬软件的中间层
  • 资源管理程序
  • 提供面向系统的命令

内核组成

文件系统 <-- 进程管理 <-- TTY,命令行工具/命令行输入

进程管理

进程的特点:

  • 正在执行的程序或命令;
  • 有自己的地址空间,占用一定系统资源;
  • 一个CPU核同一时间只能运行一个进程; -由其进程ID(PID)和父进程ID(PPID)唯一识别:父进程作为模板,创建新进程,将子进程的内容映射到该进程中——树形结构。

查看进程属于内核还是用户进程:

ps -ef | grep nginx   #查询nginx是哪个进程的

查看进程具体信息:

top -p xxxxx    #xxxxx是进程的ID,是上一条命令中第二个量

NI资源抢占的时候该进程的优先级
S进程状态:休眠状态

关闭指定进程:

kill xxxxx

全部进程动态实时展示(类似资源管理器):

top
进程调度

CPU将不同进程运行时间进行切分。

26:30-29:07 进程调度.png

进程调度原则:

  • 一个CPU核同一时间只能运行一个进程;
  • 每个进程有近乎相等的执行时间;
  • 对于逻辑CPU,使用轮询方式进行,当轮询完成则回到第一个进程反复:OS创建调度队列管理进程,CPU进行进程调度时会从每个队列的第一个进程开始调度,直到执行完所有队列-保证每个进程都能被调用到;
  • 进程执行消耗时间与进程量成正比。
进程的系统调用

系统调用(IO请求),应用程序从用户态切换为内核态,读取完成后,返回应用程序,应用程序从内核态重新变为用户态。

文件系统

Linux中一切皆文件,便于管理的数据存到磁盘,持久化保存文件。

文件组成类型:

  • 普通文件(index.html):ext2/3/4
  • 目录
  • 设备
  • 套接字socket(网络连接字段):nfs

文件系统管理文件的方法:树状目录结构,最上层是根目录。

问题引入虚拟文件系统:不同的文件系统和文件类型,Linux怎么实现对用户的同一文件接口?

答:虚拟文件系统VFS。打通不同文件类型,保证所有操作都是统一的。

怎么知道文件系统是什么类型的指令:

df -T   #快速将文件系统的一些文件类型举例出来
mount   #打印包含文件子同类型在内的磁盘分区信息

查看文件夹下内容:

mkdir xxxx #创建文件夹
mv xxxx /home #移动xxxx文件夹到/home
rm -r xxxx #删除xxxx文件夹
touch file.txt #创建空文件
cp file.txt file.bak.txt #复制file.bak文件到file文件里
文件读取流程

38:34-40:13

DMA:直接和磁盘进行交互,获取磁盘数据。

文件读取流程.png

用户权限

组成内容:

  • 用户账户
    • 普通用户账户:使用者
    • 超级用户账户:管理者
  • 组账户
    • 标准组:可容纳多个用户
    • 私有组:只有用户自己

查看用户信息的指令:

w #查看当前登录用户信息
groups #查看当前用户所属组
id xxxx #查看用户uid信息
文件权限

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

  • 所有者
  • 所在组
  • 其他人

程序语言中的表示:例drwxr-xr-x 头字母表示文件类型,后每三个字符为一组分别表示所有者,所在组,其他人的文件权限。

用户权限操作:

用户权限操作.png

Linux软件包管理

  • 软件包:应用程序
  • 软件包管理(工具):
    • 底层工具(自给自足):处理安装和删除软件包文件任务-DPKG(Debian),RPM(Red hat)
    • 上层工具(雇人帮我全部打点好):用于数据搜索和依赖解析-APT,YUM,DNF

以下内容暂时没用


Debian APT常用命令

APT.png

Debian配置软件源

软件源.png

nginx安装

nginx安装.png

nginx配置修改

nginx配置修改.png