青训营笔记

127 阅读4分钟

Liunx基础

学习Linux的价值

·Linux是现代化应用程序交付的首选平台,无论是部署在裸机、虚拟化还是容器化环境

·公司内部服务(TCE、FaaS、SCM)统一使用Debian Linux系统

·熟悉Linux基础指令,熟练运维前端常用服务(Nginx,Node.js)

·加深对操作系统概念和实现的理解,夯实基础知识

01 计算机硬件

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

 ·控制器:是整个计算机的中枢神经,是计算机的控制系统
         其功能是对程序规定的控制信息进行解释,根据其要求进行控制,
         调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
 
 ·运算器:是计算机的运算系统,运算器的功能是
         对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
 
 ·存储器单元:是计算机存储系统
    1.内存:比如内存条,基于电存取数据,断点数据全部丢失,用于临时保存数据,存取速度快
    2.外存:用于永久保存数据,断电数据仍然存在 
           a.机械硬盘:存取数据慢,基于磁存取数据 
           b.固态硬盘(SSD):依赖电子存取数据,相对机械硬盘速度较快
 
 ·输入单元:是向计算机输入数据和信息的设备,键盘、鼠标、麦克风等等
 
 ·输出单元:显示器、耳机、打印机等等
 

五大基本单元的配合工作

($KNL382E0B4E39[(JY}DQ5.png

02 计算机操作系统

操作系统(Operating System,OS)

管理和控制计算机系统中的硬件和软件资源,用于在用户与系统硬件之间传递信息
承上:在操作系统之上运行我们的应用程序
启下:通过操作系统直接与系统硬件进行交互
NL}RA2N~3L7BDQTV`W99O[6.png ~`WYRY`5JLBEKY8DDS4S4S0.png

操作系统启动流程

程序启动必须有操作系统来执行,那操作系统本身也是一个程序,那是如何在开机时被执行的呢?

JF9F~5S_UM}XA)NJMUG{HLR.png

分为两类:一类是基于BIOS去引导操作系统启动的一个传统模式;
         一类是基于UEFI去引导操作系统启动的一个主流模式。
BIOS,UEFI是固化在主板上的一段程序,主要作用是能够让计算机在开机的时候,就能够去执行和解析
程序,当这段程序启动以后,会进行一系列的初始化动作,然后去找Bootloader(操作系统的引导程序
),找到并运行这段程序,在Bootloader运行后,通过Bootloader加载和运行相应的OS。
区别:
UEFI其实是BIOS的一个优化和升级的版本,BIOS本身有一些限制和问题,BIOS在开机的时候会有一
个自检,会导致启动的速度变慢。BIOS不支持从硬盘2TB以上的地址引导:受限于BIOS硬盘的寻址
方式,BIOS硬盘采用32位地址,因而引导扇区的最大逻辑块地址是232

03 Linux系统概览

1.Linux发展简史

1.1969年,Unix诞生于贝尔实验室

2.1984年,贝尔实验室将Unix商业化

3.1984年,Tanenbaum开发Minix操作系统用于教学并开放源码

4.1984年,Pichard M.Stallman发起自由软件(FSF)与GNU项目,起草GPL(通用公共许可)协议

5.1991年,Linus Torvalds受Minix影响实现初版的Linux内核

6.1992年,Linux内核以GPL协议发行V1.0

2.Linux版本

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

发行版本:Linux内核 + 常用软件

3.查看Linux系统内核版本

方法一:uname -a

方法二:cat /proc/version

cat /etc/os-release 查看Linux发行版本

Linux系统应用领域

·IT服务器(操作系统、虚拟化和云计算)

·嵌入式和智能设备

·个人办公桌面

·学术研究与软件研发

04.Linux基本组成

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

·内核、shell、文件系统、应用程序
1XT@_SXM4QRIP]9`81H8E$7.png

Linux体系结构

`@LSCM9@TNU_KQ)]X4XJAS4.png
·内核是硬件与软件之间的中间层
·内核是一个资源管理程序
·内核提供一组面向系统的命令

04 Linux系统结构———进程管理

·进程是正在执行的一个程序或命令

·进程有自己的地址空间,占用一定的系统资源

·一个CPU核同一时间只能运行一个进程

·进程由它的进程ID(PID)和它父进程的进程ID(PPID)唯一识别

查看进程信息

·查看启动的nignx进程
 ps -ef | grep nginx
·查看某个进程
 top -p 93824
·关闭指定的进程
 kill 93824
·全部进程动态实时视图
 top

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

进程调度(操作系统按某种策略或规则选择进程占用CPU进行运行的过程)来实现
(@X0CW~N`{SGS(]TJXM[@{L.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而言进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复

·进程执行消耗时间和进程量成正比

进程的系统调度

内核空间(Kernal Space):系统内核运行的空间

用户空间(User Space):应用程序运行的空间

9WMF7E66X{0]KK8NFWBQ({R.png

04 Linux系统结构——文件系统

Linux中一切皆文件

 文件系统是操作系统中负责管理持久数据的子系统,负责把用户的文件存到磁盘硬
 件中,持久化的保存文件。
LZQQ2}D2_D$N$WXS$J{9IK1.png

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

J}IPNFE]WHWJS0NH9((QV_3.png

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

虚拟文件系统(VFS)
·对应用层提供一个标准的文件操作接口
·对文件系统提供一个标准的文件接入接口
V8YA[$)757%QVY3{@{G8PLM.png

查看文件系统类型

HG{XXF}Y$]UMWUR55UCFM64.png @5MIRUIL_4_VX7QI[(Q4PAL.png

文件读取流程

__K5R4WG[}R6MRKZ6)S8E{K.png

04 Linux系统架构——用户权限

用户账户

 ·用户账户
    普通用户账户:在系统中进行普通作业
    超级用户账户:在系统中对普通用户和整个系统进行管理
    
 ·组账户
    标准组:可以容纳多个用户
    私有组:只有用户自己
查看用户信息
image.png

04_文件权限

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

所有者:文件的所有者

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

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

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

image.png

04_用户权限操作

image.png

05 Liunx软件包管理

·软件包

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

·软件包管理

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

05_软件包管理工具

·RPM(Red Hat Package Manager),为 Red hat操作系统的包管理系统
·DPKG (Debian package),为Debian操作系统的包管理系统

05_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