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