Linux基础|青训营笔记
一、计算机硬件
计算机五大基本单元
- 中央处理器(CPU)CPU是计算机的大脑,负责执行程序代码,进行运算与逻辑判断,控制计算机各部件的工作。CPU的主要组成部分有控制器、运算器、寄存器等。
- 主存(内存)主存用于暂时存储CPU执行的程序和处理的数据。它的访问速度快,但存储空间小且易失。主存的两大类型是DRAM和SRAM。
- 外存(存储器)外存用于长期保存大量程序和数据,其存储空间大但访问速度慢。常用的外存有硬盘、固态硬盘、光盘等。外存与主存之间通过I/O控制器实现数据交换。
- 输入设备(键盘、鼠标等)输入设备用于向计算机输入各种信息、命令和数据。常见的输入设备有键盘、鼠标、触摸屏、扫描仪等。
- 输出设备(显示器、打印机等)输出设备从计算机取得信息并将其输出显示或打印。常用的输出设备有显示器、打印机、投影仪等。
二、操作系统
承上:运行应用程序
启下:与硬件进行交互
谁来运行操作系统这个程序?
通过固化在主板上的程序(BIOS/UEFI)来在开机时引导操作系统这个程序运行
ps:UEFI是BIOS的优化
三、Linux系统概述
版本:内核、发行
查看Linux版本
方法一
uname -a
方法二
cat /proc/version
查发行版本
cat/ect/os-relase
四、Linux系统结构
基本组成
- 内核
- shell(命令解释器)
- 文件系统
- 应用程序
Linux操作系统的基本组成可以分为内核与外壳两大部分。
内核(Kernel)是Linux的核心部分,是操作系统最重要的程序,负责系统的内存管理、进程调度、文件系统管理、网络管理等基本功能。
内核将计算机的硬件抽象为一系列标准的接口与调用,供外部程序使用。
外壳(Shell)是接收用户输入命令并解释执行的程序,是用户与内核沟通的接口。常用的Linux外壳有Bash、Zsh、Tcsh等。外壳读取用户在命令行输入的命令,将其翻译成内核可以理解的指令,并在用户界面下显示结果。
内核与外壳之间通过系统调用接口相连接。外壳接收的用户命令最终会转化为对内核的系统调用,由内核来完成实际的工作。外壳再将内核的执行结果返回给用户。
除内核与外壳之外,Linux系统还包括以下几个基本部分:
- 启动引导程序:用于开机自检与启动内核,如GRUB等。
- 系统工具:各种系统管理和配置的实用工具,如ps、ifconfig、netstat等。
- 库:实现各种功能与算法的代码库,方便应用程序调用,如glibc库等。
- 系统服务:各种后台服务进程,如SSH服务、NTP服务、Cron服务等。
- 程序应用:各种应用软件,如GCC编译器、MySQL数据库、Apache Web服务器等。
Linux系统通过这几个部分的配合协作,实现操作系统的各项基本功能与服务。内核与外壳是其中最为核心和重要的两个部分,理解它们的工作原理与关系,对全面掌握Linux系统至关重要。
体系结构
- 内核是硬件与软件之间的中间层
- 内核是一个资源管理程序
- 内核提供一组面向系统的命令
进程管理
- 进程是正在执行的一个程序或命令
- 进程有自己的地址空间,占用一定的系统资源
- 一个 CPU 核同一时间只能运行一个进程
- 进程由它的进程 ID(PID)和它父进程的进程 ID (PPID) 唯一识别
查看nginx进程
进程调度
- 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而言进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复
- 进程执行消耗时间和进程量成正比
进程的系统调用
文件系统
Linux中一切皆文件(普通文件、目录、设备、套接字...)
Linux文件系统采用树状的目录结构
用虚拟文件系统(vfs)这个中间件抹平文件差异
对文件夹的操作
文件读取流程
用户权限
Linux系统采用用户与组的概念管理对系统资源的访问权限。每个用户属于一个或多个组,用户可以根据自己的身份访问对应组的资源。
Linux中的用户权限主要包括:
- 文件权限:控制用户对文件的访问。分为读(r)、写(w)、执行(x)三种权限。
- 目录权限:控制用户对目录的访问。同样分为读(r)、写(w)、执行(x)三种权限。
- 文件所有者:文件的创建者,对文件拥有最高权限。
- 文件所在组:除文件所有者外,同一组中的用户对文件也有一定访问权限。
- 其他用户:除文件所有者和同组用户外的其他系统用户。
- 特殊权限:包括SUID、SGID与Sticky Bit,用于在特定场景下放大用户权限。
- 超级用户root:Linux的系统管理员,拥有对系统所有资源的访问权限。
这套权限机制可以实现Linux系统的安全可控。系统资源只能被授权的用户访问,而root用户也只在必要时使用,以减少滥用权限的风险。文件与目录的权限是通过字符表示,如644表示用户拥有读写权限,同组用户拥有读权限,其他用户拥有读权限。
权限字符的位置与意义如下:
- 第一位:SUID/SGID/Sticky Bit
- 接下三位:文件所有者权限
- 中间三位:文件所有组权限
- 最后三位:其他用户权限理解Linux的权限机制,是成为Linux系统管理员的基础。
五、软件包
软件包
通常指的是一个应用程序,它可以是一个 GUI 应用程序、命令行工具或(其他软件程序需要的)软件库
软件包管理
底层工具:主要用来处理安装和删除软件包文件等任务,DPKG,RPM 上层工具:主要用于数据的搜索任务和依赖解析任务,APT,YUM,DNF
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
六、个人感受
1、大部分的服务器操作系统都是Linux系统,前端项目的部署环境大都也是Linux服务器。Linux系统的运维与管理对前端工程师来说是必须掌握的技能之一。熟悉常用的Linux命令可以大大提高工作效率,很多操作都可以通过命令来完成,无需图形界面。 2、Linux系统体系结构的理解对前端工程师有帮助。Linux采用模块化设计,将系统功能划分为各个模块,如文件系统、进程管理、内存管理等模块。这种模块化思想也被前端工程化广泛采用,前端项目也通过模块化设计实现系统的可维护性和可扩展性。