Linux基础|青训营笔记

67 阅读12分钟

这是我参与的青训营笔记创作活动的第2

以下代码均在Ubuntu Linux系统下进行(课程需要Debian Linux但是Ubuntu基于Debian所以懒得再装^ _ ^)

课程主要学习

  • 计算机硬件
  • 计算机操作系统
  • Linux系统概况
  • Linux系统结构
  • Linux系统软件包管理器

计算机硬件

计算机五大基本单元:控制器、运算器、存储器单元、输入单元、输出单元

  1. 控制器(Control):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。
  2. 运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
  3. 存储器(Memory):存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。
  4. 输入(Input system):输入设备是计算机的重要组成部分,输入设备与输出设备合你为外部设备,简称外设,输入设备的作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。常见的输入设备有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等。
  5. 输出(Output system):输出设备与输入设备同样是计算机的重要组成部分,它把计算机的中间结果或最后结果、机内的各种数据符号及文字或各种控制信号等信息输出出来。微机常用的输出设备有显示终端CRT、打印机、激光印字机、绘图仪及磁带、光盘机等。

计算机操作系统

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

12.png

13.png

14.png

操作系统的启动分为传统模式,也就是基于BIOS的启动流程。BIOS或者UEFI其实就是一段固化在主板上的程序,计算机启动时会默认运行这段程序,然后通过这段程序去运行这段程序,然后通过这段程序去运行主板引导项

可以将UEFI理解为BIOS流程的升级版本,解决优化BIOS的操作系统引导程序,然后通过引导程序初始化操作系统,优化了BIOS的自检流程等

BIOS的三大功能分别如下:

1、自检及初始化的作用:

(1)用于电脑刚接通电源时对硬件部分的检测,功能是检查电脑是否良好,通常完整的POST自检将包括对CPU,640K基本内存,1M以上的扩展内存,ROM,主板,CMOS存储器,串并口,显示卡,软硬盘子系统及键盘进行测试。

(2)初始化,包括创建中断向量、设置寄存器、对一些外部设备进行初始化和检测等,其中很重要的一部分是BIOS设置,主要是对硬件设置的一些参数,当电脑启动时会读取这些参数,并和实际硬件设置进行比较,如果不符合,会影响系统的启动。

(3)引导程序,功能是引导DOS或其它操作系统。BIOS先从软盘或硬盘的开始扇区读取引导记录,如果没有找到,则会在显示器上显示没有引导设备,如果找到引导记录会把电脑的控制权转给引导记录,由引导记录把操作系统装入电脑,在电脑启动成功后,BIOS的这部分任务就完成了。

2、程序服务处理:程序服务处理程序主要是为应用程序和操作系统服务,这些服务主要与输入输出设备有关,例如读磁盘、文件输出到打印机等。为了完成这些操作,BIOS必须直接与计算机的I/O设备打交道,它通过端口发出命令,向各种外部设备传送数据以及从它们那儿接收数据,使程序能够脱离具体的硬件操作。

3、硬件中断处理:硬件中断处理则分别处理PC机硬件的需求,BIOS的服务功能是通过调用中断服务程序来实现的,这些服务分为很多组,每组有一个专门的中端。

Linux 系统概况

15.png

Linux版本

  • 内核版本
  • 发行版本

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

16.png

查看Linux内核版本

方法一 :uname -a

方法二 cat /proc/version

1.png

查看Linux系统版本

cat /ect/os-release

2.png

Linux系统应用领域

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

Linux系统结构

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

  • 内核
  • shell
  • 文件系统
  • 应用程序

18.png

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

1.内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序

2.Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。 

3.文件结构是文件存放在磁盘等存储设备上的组织方法。主要体现在对文件和目录的组织上。

4.标准的Linux系统都有一套叫做实用工具的程序,它们是专门的程序,例如编辑器、执行标准的计算操作等。

Linux系统结构 --进程管理

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

19.png

操作系统对于进程(线程)的管理包括以下几个方面:

进程的调度:在多个等待使用处理器的进程中,按照一定策略选择合适的进程,使之拥有处理器的使用权而进入运行。

进程的同步:对系统中的多个进程在对共享资源的使用出现竞争时进行控制和协调。

进程的控制:进程的创建和撤消以及进程状态的转换。

进程的安全:解决因多个进程争夺资源的使用权而进入 “死锁”的僵局,使系统安全顺利地运行。

查看进程信息

1.查看启动的进程:ps -ef | grep nginx

2.查看某个进程top -p 进程号

3.关闭指定的进程:kill 进程号

4.全部进程动态实时视图:top

3.png

4.png

进程调度

20.png

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

21.png

22.png

进程调度原则

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

进程的系统调用

  • 内核空间(Kernal Space):系统内核运行的空间
  • 用户空间(User Space):应用程序运行的空间

23.png

Linux系统结构 --文件系统

文件系统负责管理持久化数据的子系统,负责把用户的文件存到磁盘硬件中

Linux中一切皆文件

  • Linux中几乎所有读(读文件、读系统状态、读Socket、读PIPE)的操作都可以用read函数来进行,几乎所有更改(更改文件。更改系统参数、写Socket、写PIPE)的操作都可以用write函数来进行

  • 使用任何硬件设备都必须根目录下某一目录执行挂载操作

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

24.png

  1. /bin:bin是Binaries(二进制文件)的缩写,这个目录存放着最经常使用的命令

  2. /boot:这里存放的是启动Linux时使用的一些核心。包括一些连接文件以及镜像文件

  3. /dev:dev是Device(设备)的缩写,该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的

  4. /etc:etc是Etlcetera等的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录

  5. /home:用户的主目录,在Linux中,每个用户都有自己的一个目录,一般该目录名是以用户名的账号命名的。

  6. /lib:lib是Library(库)的缩写,这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DDL文件。几乎所有的应用程序都需要用到这些共享库。

  7. /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了

  8. /opt:opt是option(可选)的缩写,这里是给主机额外安装软件所摆放的目录。

  9. /proc:proc是Processes(进程)的缩写,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

  10. /root:该目录为系统管理员,也称作超级权限者的用户主目录

  11. /sbin:s就是Super User的意思,是Superuser Binaries(超级用户的二进制文件)的缩写,这里存放的是系统管理员使用的系统管理库

  12. /user:usr是unix shared resources(共享资源)的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于Windows下的program files目录。

25.png

虚拟文件系统(VFS)

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

26.png

虚拟文件系统的功能:

1.提供一致的文件和文件sys的接口

2.管理文件和文件系统相关的数据结构

3.与不同文件系统的模块交互

4.记录可用的文件系统的类型

5.将设备同对应的文件系统联系起来

6.处理一些面向文件的通用操作

7.涉及到针对文件系统的操作时,VFS把它们影射到与控制文件、目录以及inode相关的物理文件系统。

查看文件系统类型

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

5.png

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

6.png

文件基本操作

ls #查看文件夹下内容

mkdir 文件夹 #创建文件夹

mv 文件夹/home #移动文件夹到/home

rm -r 文件夹 #删除文件夹

touch 文件名 #创建空文件

cp 文件名 新文件名 #复制文件

7.png

8.png

9.png

文件读取流程

27.png

Linux系统结构 --用户权限

用户账户

  • 用户账户
  1. 普通用户账户:在系统中进行普通作业

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

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

  2. 私有组:只有用户自己

Linux是一个多用户的系统,我们可以多个用户同时登录Linux

文件权限

28.png

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

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

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

查看用户信息

查看当前登录用户信息:w

查看当前用户所属的组:groups

查看用户的UID信息:id 用户名

10.png

用户权限操作

# 在根目录创建一个文件夹,查看当前用户拥有文件夹的权限
cd / && mkdir 文件名 && ls -ld 文件名

sudo useradd 用户名 #创建一个用户,并赋予可写操作
sudo passwd 用户名 #设置用户密码
su 用户名 #切换用户登录
cd 用户名 #进入文件夹
touch 文件名 #创建一个文件,提示无权限,需要给新用户文件夹的权限

sudo chmod  o+r ./文件名 #文件夹写文件赋予给其他人
su 用户名 #切换用户登录
cd 用户名 #进入文件夹
touch 文件名 #创建文件成功

11.png

Linux软件包管理

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

  • 软件包管理

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

软件包安装工具

  • RPM:为Red hat 操作系统的包管理系统
  • DPKG:为Debian操作系统的包管理系统

29.png

Debian APT常用命令

30.png

Debian配置软件源

31.png

/dists:查看系统代号

/pool:查看软件分支

nginx安装

# 更新包缓存
apt update
#安装nginx包
apt install nginx
#查找nginx路径,/etc/nginx配置文件路径,/usr/sbin/nginx可执行文件
whereis nginx
# 访问nginx部署的默认站点
curl http://localhost:80
#关闭ng
sudo /user/sbin/nginx -s stop
#启动ng
sudo /usr/sbin/nginx

32.png

33.png

34.png

35.png

36.png

nginx配置修改

# 进入nginx配置文件夹
cd /etc/nginx
# 打开nginx配置文件nginx.conf,发现默认的站点配置位于/etc/nginx/sites-enabled
cat nginx.conf文件夹,并对default文件配置,修改80端口为8080
#进入sites-enabled
cd sites-enabled && vim default
#重启nginx服务
sudo /usr/sbin/nginx -s reload
#访问nginx部署的默认站点
curl http://localhost:8080

37.png