linux | 青训营笔记

73 阅读9分钟

1、计算机硬件

5大单元

控制器:可以接受指令解码,调度指令

运算器:算数和逻辑单元

运算器是计算机中的算术和逻辑单元,用于执行各种算术和逻辑运算。存储器单元

用于存储程序和数据。它分为内存和外存两部分,内存一般指主存储器,外存一般指磁盘等外部存储设备

输入单元 用于接收外部数据并将其传输到计算机系统中。例如,键盘、鼠标、扫描仪等都是输入单元

输出单元:用于将计算机系统中的数据传输到外部环境中。例如,显示器、打印机、喇叭等都是输出单元

2、计算机操作系统

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

管理计算机资源:处理器、存储器、设备管理、文件管理 提供用户接口:命令接口、图形用户接口、程序接口

操作系统本身也是一种程序,如何在开机时被执行的呢?

BIOS---BIOS自检-----bootloader----os

BIOS(Basic Input/Output System,基本输入输出系统)

UEFI ------bootloader----os

UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口)

 

3、linux 版本:

内核版本

发行版本

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

主流的linux版本有debian redhat slackware 国产系列 查看linux内核版本

linux体系结构 硬件层 内核层 应用程序层 用户层 包含shell

4、用户空间和内核空间

a、用户空间,指的是应用程序运行的空间,包含SHELL

 b、内核空间,通常运行在特权级别最高的模式 1与2 通过系统调用进行通信

IO请求 1、应用程序通过系统调用向内核发起IO请求

2、内核收到,检查合法性

3、合法,加入等待队列,控制权移交应用程序

4、IO完成请求后,一个中断信号给到内核

5、内核在中断程序中检查等待队列,完成的进行移除,并将数据复制到应用程序,多个请求的话,内核会进行调度

6、处理完成,内核向应用程序发布信号,已完成

7、应用程序收到信号,继续执行逻辑,IO请求完成

系统调用

1、用户指定调用的类型和参数

2、控制权转移内核,切换内核态

3、操作系统会执行系统调用,处理

4、处理完成,返给用户程序,切换用户态

内核

1、内核是硬件与软件的中间层

2、内核是一个资源管理程序

3、内核提供一组面向系统的命令

linux的进程管理

进程是正在执行的程序和命令 进程是操作系统中正在执行的一个程序或命令的实例。每个进程都有一个唯一的进程标识符(PID)和一组相关的系统资源

进程命令 查看启动的nginx进程 ps aux grep nginx

查看某个进程 ps -p top -p 查看资源使用的情况 关闭指定进程 kill 全部进程动态实时视图 top 用快捷键q退出top指令

系统中运行的程序远远大于CPU的核数,那Liux系统是如何实现同时运行这么多程序的? 进程调度是指操作系统按某种策略或规则选择进程占用CPU进行运行的过程: 它负责将系统中的进程分配到 CPU 的执行时间。因为一个系统中同时可能有很多进程需要运行,而 CPU 的时间是有限的,因此需要对这些进程进行调度,以便让它们都得到适当的时间片,从而使整个系统运行更加高效

进程的状态

R(TASK-RUNNING)可执行状态

S(TASK-INTERRUPTIBLE)可中断的睡眠转台

D(TASK-UNINTERRUPTIBLE)不可中断的睡眠状态

T(TASK-STOPPED OR TASK-TRACED) 暂停状态或者跟踪状态

Z(TASK-DEAD-EXIT-ZOMNIE) 退出状态 僵尸进程

X(TASK -DEAD-EXIT-DEAD) 推出状态,进程即将销毁

进程调度的目标是提高系统的资源利用率和响应速度,通过有效地利用 CPU 时间,让系统可以同时运行多个进程,从而实现高效的资源共享。常见的进程调度算法包括先来先服务(FCFS)、短作业优先(SJF)、时间片轮转(RR)等

 

linux

1、用户程序发起系统调用,例如调用打开文件的系统调用 open()。

2、程序经过用户态内核态切换后,进入内核态执行系统调用。

3、内核执行系统调用,并返回结果给用户程序,例如返回一个文件句柄。

4、程序再次经过内核态用户态切换后,回到用户态执行后续代码。

 

linux文件系统

树状的目录结构

最上层是根目录  (/)

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

linux 为不同的文件系统提供了统一的操作方式

就是虚拟文件系统(virtual,file system)

VFS

在 VFS 中,对所有的文件系统都采用统一的操作方式,这些操作会被映射到各个具体文件系统所对应的操作函数上。通过这种方式,VFS 能够屏蔽不同文件系统的差异性,为上层应用程序提供了一个统一的视图,使得应用程序不必关心文件的具体存储细节,而只需要关注文件操作本身。

因此,无论是 ext4、NTFS、FAT32 还是其他文件系统,应用程序都可以使用同样的方式来访问它们。这也是 Linux 系统在文件系统方面具有很强可扩展性和兼容性的一个重要原因。

 

df -T

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

mount

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

 

简单文件操作命令

1S#查看文件夹下的内容

mkdir demo  #创建文件夹

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

re-r demo#删除demo文件夹

touch file.txt #创建空文件

cp  file.txt file-bak.txt #复制文件

 

文件读取流程

(图片比较容易理解)

用户空间

内核空间

硬件空间

 

linux用户权限

用户账号

1、普通用户账号

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

 

组账户

1、标准组(可以容纳多个用户)

2、私有组(用户只有自己)

 

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

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

查看用户的uid信息:id

 

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

1、所有者

2、所在组

3、其他人

 

每个用户对文件都有不同的权限

包括读(R)  写(W)  执行(X)

 

 

d            rwx          r-x        r-x

 

文件类型  所有者  所在住  其他人

 

基础用户操作命令

 

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

 

 

这是三个命令组合在一起执行的语句。

 

1、cd / 切换到根目录

2、mkdir demo 创建名为demo的文件夹

3、ls -ld demo 查看demo文件夹的详细信息,包括文件夹的权限等。其中,ls是查看文件和目录的命令,-l选项是显示详细信息,-d选项是显示目录自身信息,而不是显示目录内文件信息。

 

 

cd /&&mkdir demo &&1s -1d demo

 

 

创建一个用户,并赋予可写操作

sudo useradd

表示以管理员权限执行添加用户的操作,而 ceshi 则是指定要创建的用户的用户名。执行该命令后,系统会创建一个新的用户账户,并在系统中为其分配一个用户ID、主目录和默认shell等

 

sudo useradd ceshi

以管理员权限执行添加用户的操作

ceshi

 ceshi 则是指定要创建的用户的用户名。执行该命令后,系统会创建一个新的用户账户,并在系统中为其分配一个用户ID、主目录和默认shell等

 

sudo passwd ceshi

设置用户密码

其中sudo是用来获得超级用户权限,passwd是用来设置用户密码的命令,ceshi是指定要设置密码的用户

 

su ceshi

切换ceshi用户登录

在当前终端中切换到用户ceshi的身份。通过执行这个命令,你可以在终端中执行ceshi用户具有权限的操作

 

cd demo

进入demo文件夹

 

touch index.js

创建index.js文件,提示无权限,需要给ceshi 用户demo 文件夹的权限

 

sudo chown -R ceshi :ceshi  ./demo

目录下的demo 文件夹内的所有文件和拥有者和所有组全部改成ceshi 用户和ceshi 组,其中-R参数表示递归修改

 

su ceshi

切换ceshi 用户登录

 

 

cd demo

进入demo 文件夹

 

touch index.js

创建index.js 文件成功

 

 

linux系统软件包管理器

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

软件包管理:

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

底层工具主要用于底层的软件包管理操作,例如软件包的安装、卸载、更新等,其主要特点包括:

 

以命令行为主要界面;

操作灵活、功能强大;

操作相对复杂,需要较高的技术水平。

 

常见的底层工具包括:

 

DPKG:Debian Linux 系统的底层软件包管理工具;

RPM:Red Hat Linux 系统的底层软件包管理工具;

yum:基于 RPM 的高级包管理器;

apt:基于 dpkg 的高级包管理器。

 

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

提供图形化界面,操作简单方便;

可以方便地搜索、安装和卸载软件包;

功能相对有限

的上层工具包括:

 

Synaptic:适用于 Debian 系统的上层软件包管理工具;

Yumex:适用于 Red Hat 系统的上层软件包管理工具;

Apper:适用于 KDE 桌面环境的上层软件包管理工具;

Gnome-Software:适用于 Gnome 桌面环境的上层软件包管理工具。

 

 

常用的命令

 

apt update  列出所有可更新的软件清单

apt install  安装特定的软件

apy install

安装多个软件包

apt update更新指定软件

apt remove(package-name>删除软件包指令

apt search 查找软件包命令

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

 

 

 

管理软件源

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