Linux基础|青训营笔记

71 阅读7分钟

Linux基础|青训营笔记

一、计算机硬件

计算机五大基本单元

  1. 中央处理器(CPU)CPU是计算机的大脑,负责执行程序代码,进行运算与逻辑判断,控制计算机各部件的工作。CPU的主要组成部分有控制器、运算器、寄存器等。
  2. 主存(内存)主存用于暂时存储CPU执行的程序和处理的数据。它的访问速度快,但存储空间小且易失。主存的两大类型是DRAM和SRAM。
  3. 外存(存储器)外存用于长期保存大量程序和数据,其存储空间大但访问速度慢。常用的外存有硬盘、固态硬盘、光盘等。外存与主存之间通过I/O控制器实现数据交换。
  4. 输入设备(键盘、鼠标等)输入设备用于向计算机输入各种信息、命令和数据。常见的输入设备有键盘、鼠标、触摸屏、扫描仪等。
  5. 输出设备(显示器、打印机等)输出设备从计算机取得信息并将其输出显示或打印。常用的输出设备有显示器、打印机、投影仪等。

image.png

二、操作系统

承上:运行应用程序
启下:与硬件进行交互

image.png

谁来运行操作系统这个程序?

通过固化在主板上的程序(BIOS/UEFI)来在开机时引导操作系统这个程序运行

image.png

ps:UEFI是BIOS的优化

三、Linux系统概述

版本:内核、发行

image.png

image.png

查看Linux版本

方法一 uname -a

方法二 cat /proc/version

查发行版本

cat/ect/os-relase

四、Linux系统结构

基本组成

  • 内核
  • shell(命令解释器)
  • 文件系统
  • 应用程序

image.png

Linux操作系统的基本组成可以分为内核与外壳两大部分。

内核(Kernel)是Linux的核心部分,是操作系统最重要的程序,负责系统的内存管理、进程调度、文件系统管理、网络管理等基本功能。

内核将计算机的硬件抽象为一系列标准的接口与调用,供外部程序使用。

外壳(Shell)是接收用户输入命令并解释执行的程序,是用户与内核沟通的接口。常用的Linux外壳有Bash、Zsh、Tcsh等。外壳读取用户在命令行输入的命令,将其翻译成内核可以理解的指令,并在用户界面下显示结果。

内核与外壳之间通过系统调用接口相连接。外壳接收的用户命令最终会转化为对内核的系统调用,由内核来完成实际的工作。外壳再将内核的执行结果返回给用户。

除内核与外壳之外,Linux系统还包括以下几个基本部分:

- 启动引导程序:用于开机自检与启动内核,如GRUB等。
- 系统工具:各种系统管理和配置的实用工具,如ps、ifconfig、netstat等。
- 库:实现各种功能与算法的代码库,方便应用程序调用,如glibc库等。
- 系统服务:各种后台服务进程,如SSH服务、NTP服务、Cron服务等。
- 程序应用:各种应用软件,如GCC编译器、MySQL数据库、Apache Web服务器等。

Linux系统通过这几个部分的配合协作,实现操作系统的各项基本功能与服务。内核与外壳是其中最为核心和重要的两个部分,理解它们的工作原理与关系,对全面掌握Linux系统至关重要。

体系结构

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

image.png

image.png

进程管理

  • 进程是正在执行的一个程序或命令
  • 进程有自己的地址空间,占用一定的系统资源
  • 一个 CPU 核同一时间只能运行一个进程
  • 进程由它的进程 ID(PID)和它父进程的进程 ID (PPID) 唯一识别

查看nginx进程

image.png

进程调度

image.png

  • R(TASK_RUNNING),可执行状态
  • S(TASK_INTERRUPTIBLE),可中断的睡眠状态
  • D(TASK UNINTERRUPTIBLE),不可中断的睡眠状态。
  • T(TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态
  • Z(TASK DEAD-EXIT ZOMBIE),退出状态,进程成为僵尸进程
  • X(TASK_DEAD- EXIT_DEAD),退出状态,进程即将被销毁

调度原则

  • 一个 CPU 核同一时间只能运行一个进程
  • 每个进程有近乎相等的执行时间
  • 对于逻辑 CPU而言进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复
  • 进程执行消耗时间和进程量成正比

进程的系统调用

image.png

文件系统

Linux中一切皆文件(普通文件、目录、设备、套接字...)

Linux文件系统采用树状的目录结构

image.png

用虚拟文件系统(vfs)这个中间件抹平文件差异

对文件夹的操作

image.png

文件读取流程

image.png

用户权限

Linux系统采用用户与组的概念管理对系统资源的访问权限。每个用户属于一个或多个组,用户可以根据自己的身份访问对应组的资源。

Linux中的用户权限主要包括:

  1. 文件权限:控制用户对文件的访问。分为读(r)、写(w)、执行(x)三种权限。
  2. 目录权限:控制用户对目录的访问。同样分为读(r)、写(w)、执行(x)三种权限。
  3. 文件所有者:文件的创建者,对文件拥有最高权限。
  4. 文件所在组:除文件所有者外,同一组中的用户对文件也有一定访问权限。
  5. 其他用户:除文件所有者和同组用户外的其他系统用户。
  6. 特殊权限:包括SUID、SGID与Sticky Bit,用于在特定场景下放大用户权限。
  7. 超级用户root:Linux的系统管理员,拥有对系统所有资源的访问权限。

这套权限机制可以实现Linux系统的安全可控。系统资源只能被授权的用户访问,而root用户也只在必要时使用,以减少滥用权限的风险。文件与目录的权限是通过字符表示,如644表示用户拥有读写权限,同组用户拥有读权限,其他用户拥有读权限。

权限字符的位置与意义如下:

  • 第一位:SUID/SGID/Sticky Bit
  • 接下三位:文件所有者权限
  • 中间三位:文件所有组权限
  • 最后三位:其他用户权限理解Linux的权限机制,是成为Linux系统管理员的基础。 image.png

image.png

五、软件包

软件包

通常指的是一个应用程序,它可以是一个 GUI 应用程序、命令行工具或(其他软件程序需要的)软件库

软件包管理

底层工具:主要用来处理安装和删除软件包文件等任务,DPKG,RPM 上层工具:主要用于数据的搜索任务和依赖解析任务,APT,YUM,DNF

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

  • 列出所有已安装的包: apt list --installed

六、个人感受

1、大部分的服务器操作系统都是Linux系统,前端项目的部署环境大都也是Linux服务器。Linux系统的运维与管理对前端工程师来说是必须掌握的技能之一。熟悉常用的Linux命令可以大大提高工作效率,很多操作都可以通过命令来完成,无需图形界面。 2、Linux系统体系结构的理解对前端工程师有帮助。Linux采用模块化设计,将系统功能划分为各个模块,如文件系统、进程管理、内存管理等模块。这种模块化思想也被前端工程化广泛采用,前端项目也通过模块化设计实现系统的可维护性和可扩展性。