Linux基础 | 青训营笔记

186 阅读10分钟

学习linux的价值

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

企鹅图标表明开源的Linux,为全人类共有

计算机硬件

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

  • 控制器

控制单元是计算机的一个核心单元,它负责控制和协调计算机各个部分的工作,使其协调配合,指挥计算机完成各项任务。

  • 运算器

运算单元也是计算机的一个关键部分,其主要任务是执行各种数学操作和逻辑运算(如加、减、乘、除以及与、或、非等),处理数据。

  • 存储器单元

存储单元是计算机中负责存储数据和程序的部分。存储单元包括随机存储器(RAM)、只读存储器(ROM)、磁盘、光盘等存储设备,由于存储单元相对于其他单元更慢,因此计算机通常使用高速缓存来优化存储器的读写速度。

  • 输入单元

输入单元通常是指计算机与外界交互的设备,例如键盘、鼠标、扫描仪、触摸屏等。输入单元的任务是将外界输入数据转换成数字信号,以便计算机处理。

  • 输出单元

输出单元通常是指显示器、打印机、音响等设备,其主要任务是将计算机处理后的数字信号转换为人类可读的表格、图形、声音等形式。

运算的基本逻辑图

计算机操作系统(OS)

  • 管理和控制计算机系统中的硬件和软件资源,用于在用户与系统硬件之间传递信息

操作系统启动流程

UEFI(Unified Extensible Firmware Interface)和 BIOS(Basic Input-Output System)都是计算机启动过程中重要的组件,它们都是固件类型的程序,在计算机硬件开机后会运行,用来检查和初始化硬件,为操作系统准备工作环境。

BIOS是计算机启动的基础,在计算机诞生的早期就已经出现,负责检查硬件,初始化系统和读取启动设备上的启动引导程序。尽管BIOS在计算机发展的早期扮演了重要角色,但它也存在一些问题和限制,例如限制了硬盘分区大小、启动速度慢、稳定性差等。

UEFI是为了取代BIOS而出现的一种新型的固件类型。UEFI比BIOS更先进,它支持更大的硬盘分区、执行更多的自检程序、涉及到文件系统与磁盘间的数据传输时速度较快、开机速度快、性能更好、支持更多的引导设备、更加安全等等。UEFI比BIOS更加灵活,用户可以高度定制化BIOS环境,安全性方面还支持Secure Boot,专为防止操作系统被恶意程序替换而设计。

总的来说,UEFI比BIOS更先进和灵活,具有更好的性能和更好的安全性,逐渐成为了新一代的固件规范。

Linux系统概览

发展简史

  1. 1991年:芬兰的学生 Linus Torvalds 开始编写一个小型的操作系统 kernel,他将其称为 “Freax”,当时的 kernel 大小只有数千个字符。
  2. 1992年:Linus 发布了 kernel 的第一个公开版本(0.12),它能够运行在 Intel 386 处理器上,并且支持多任务、多用户和命令行界面等功能。
  3. 1993年:Linux 开始引起开发者和爱好者的注意,一些人开始为 Linux 贡献代码和开发功能,使其变得更加稳定和实用。
  4. 1994年:Red Hat 公司成立,开始开发 Linux 基础组件,并以商业模式销售自己的 Linux 发行版 Red Hat Linux。
  5. 1995年:Linux 社区成立,吸引了越来越多的开发者和爱好者参与到 Linux 的开发和推广中。
  6. 1996年:Debian 发布了自己的 Linux 发行版 Debian GNU/Linux。
  7. 1998年:Netscape 公司宣布将其 Navigator 浏览器的源代码开放,并创建了开源组织 Mozilla。这个事件也鼓励了更多商业公司开始贡献代码和支持开源项目,包括 Linux。
  8. 2000年:IBM 宣布对 Linux 的支持,开始向 Linux 输出大量资金和开发资源,以及将自己的大型机服务移植到 Linux 平台上,进一步推动了 Linux 的发展。
  9. 2002年:企业级 Linux 发行版 Red Hat Enterprise Linux (RHEL) 发布,成为 Linux 在商业领域计算机上普及的第一个主要产品。
  10. 2003年:阿里巴巴开源团队成立,将开始参与到 GNU/Linux 的社区建设中,并深耕云原生生态圈。
  11. 2005年:Debian 开源协议发布,此时 Debian 协议被认为是最宽松的自由软件许可证之一。
  12. 2018年:Red Hat 公司被 IBM 收购,IBM 承诺将继续支持 Red Hat 的开源发展和 Linux。
    的开发者和爱好者参与到 Linux 的开发和推广中。

Linux版本

  • 内核版本

由作者本人去维护的一个版本,是操作系统的一块核心,提供了包括进程管理,内存管理,文件系统管理以及硬件资源管理等一系列的底层能力

  • 发行版本(常见的操作系统)

一部分常见的发行版本

\

查看Linux系统内核版本

方法一:uname -a

方法二:cat /proc/version

查看Linux系统发行版本

cat /etc/os-release

Linux系统应用领域

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

Linux系统结构

Linux基本组成

  • 内核

是 Linux 系统的核心和最底层的部分。内核负责管理系统的硬件、进程和内存等资源,并提供系统调用接口供应用程序调用。Linux 内核是由 Linus Torvalds 开发的。

  • shell

是 Linux 中运行在内核之上的命令解释器。Shell 负责接收命令输入,解释命令并将命令传递给内核进行处理。常用的 Shell 包括 BASH、ZSH、KSH 等。

是用户和操作系统内核之间的一个接口,允许用户通过命令行或图形用户界面(GUI)与系统交互。

  • 文件系统

提供了对存储设备和文件系统的访问和管理,如 mount、unmount等操作。

  • 应用程序

在系统中存在的各种软件,如文本编辑器、浏览器、游戏等。

Linux体系结构

进程管理

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

查看启动的nginx进程

ps -ef grep nginx

查看某个进程

top -p 93824

关闭指定进程

kill 93824

全部进程动态实时视图

top

思考:系统中运行的程序远远大于CPU核数,那Linux系统是如何实现同时运行这么多程序的?

进程调度

定义:进程调度是指操作系统按某种策略或规则选择进程占用CPU进行运行的过程

调度原则

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

进程的系统调用

内核空间:系统内核运行的空间

用户空间:应用程序运行的空间

文件系统(Linux中一切皆文件)

定义:文件系统是操作系统中负责管理持久层数据的子系统,负责把用户的文件存到磁盘硬件中,持久化的保存文件

文件系统是采用树状的目录结构,最上层是/(根目录)

问题思考:Linux有这么多不同的文件系统,如何实现对用户提供统一调用接口的?

虚拟文件系统(VFS)

  • 对应用层提供了一个标准的文件操作接口
  • 对文件系统提供一个标准的文件接入接口

查看文件系统类型

df命令报告文件系统磁盘空间利用率

df -T

mount命令是挂载文件系统用的,不带任何参数运行,会打印包含文件系统类型在内的磁盘分区的信息

mount

文件基本操作

  • makdir demo 创建文件夹
  • mv demo /home 移动demo文件夹到/home
  • rm -r demo 删除demo文件夹
  • touch file.txt 创建空文件夹
  • cp file.txt file_bak.txt 复制文件

文件读取流程

用户权限

  • 用户账号

普通用户账号:在系统中进行普通作业

超级用户账号:在系统中对普通用户和整个系统进行管理

  • 组账号

标准组:可以容纳多个用户

私有组:只有用户自己

查看用户信息

查看当前登录用户信息

w


查看当前用户所属的组

groups


查看用户的uid信息

id xxxx

文件权限

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

所有者:文件的所有者

所在组:文件的所有者所在的组

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

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

用户权限操作

在根目录创建一个文件夹,查看当前用户拥有文件夹的权限

cd /&& makdir demo && ls -ld demo

  • sudo useradd ceshi #创建一个用户,并赋予可写操作
  • sudo passwd ceshi #设置用户密码
  • su ceshi #切换 ceshi用户登录
  • cd demo #进入demo文件夹
  • touch index.js #创建index.js文件,提升无权限,需要给ceshi用户demo文件夹的权限
  • sudo chmod o+r ./demo #demo 文件夹写权限赋予其他人
  • su ceshi #切换 cheshi用户数据
  • cd demo # 进入demo文件夹
  • touch index.js #创建 index.js文件成功

Linux软件包管理

  • 软件包

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

  • 软件包管理

底层工具:主要用来处理安装和删除软件包文件等任务,DPKG,RPM

上层工具:主要用于数据的搜索任务和依赖解析任务,APT,YUM,DNF


  • RPM,为Red hat操作系统的包管理系统
  • DPKG,为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
  • 列出所有已安装的包: apt list --installed

Debain配置软件源

通常Debain系的Linux软件源配置文件:/etc/apt/sources.list

镜像地址:mirrors.aliyu.com/

/dist: 查找系统代号

/pool:查找软件分支