Linux系统基础

精简指令集(RISC)

  • 指令简单:每条指令仅一个基础操作(如仅寄存器加法),需多条指令完成复杂任务。
  • 高效流水线:简化硬件,提升频率,适合并行。
  • 依赖编译器:软件优化替代硬件复杂性,代表如ARM、RISC-V。

复杂指令集(CISC)

  • 指令复杂:单条指令可完成多步操作(如内存访问+计算)。
  • 代码紧凑:用更少指令实现功能,节省内存。
  • 硬件复杂:需解码微指令,功耗高,代表如x86。

操作系统

是一种内置的程序,用来协作计算机的各种硬件,以与用户进行交互。

操作系统主要包括以下几个方面的功能 :

1、进程管理,其工作主要是进程调度,在单用户单任务的情况下,处理器仅为一个用户的一个任务所独占, 进程管理的工作十分简单。但在多道程序或多用户的情况 下,组织多个作业或任务时,就要解决处理器的调度、 分配和回收等问题 。

2、存储管理分为几种功能:存储分配、存储共享、存储保护 、存储扩张。

3、设备管理分有以下功能:设备分配、设备传输控制 、设备独立性。

4、文件管理:文件存储空间的管理、目录管理 、文件操作管理、文件保护。

5、作业管理是负责处理用户提交的任何要求。

6、异常处理:处理程序运行中的异常

7、权限管理:

内核kernel

内核,是一个操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

  1. 中央处理器(CPU)调度
    • 通过进程调度算法(如时间片轮转、优先级调度)分配CPU时间给多个程序。
    • 实现多任务并行(如同时运行浏览器、音乐播放器),避免程序独占CPU。
    • 示例:当你在后台下载文件时,内核确保前台游戏仍流畅运行。
  2. 内存管理
    • 分配/回收物理内存和虚拟内存,防止程序越权访问。
    • 使用分页/分段技术隔离进程内存(如Chrome崩溃不会影响Word)。
    • 关键机制:虚拟内存将磁盘空间扩展为“备用RAM”,避免内存耗尽死机。
  3. 设备驱动与I/O控制
    • 通过设备驱动程序统一管理硬件(键盘、显卡、硬盘)。
    • 抽象硬件接口:应用程序只需调用read()/write(),无需关心硬盘型号。
    • 示例:打印文件时,内核将数据从应用传递到打印机驱动。

文件系统

操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。

文件系统的功能包括:管理和调度文件的存储空间,提供文件的逻辑结构、物理结构和存储方法;实现文件从标识到实际地址的映射,实现文件的控制操作和存取操作,实现文件信息的共享并提供可靠的文件保密和保护措施,提供文件的安全措施。

Linux:EXT4

Windows:NTFS

用户界面UI

用户和计算机交互的界面叫做UI

图形化界面:Windows桌面

命令行:linux终端

操作系统工作

示例:通过电脑浏览器观看视频

1、用户通过UI界面打开浏览器

2、内核为浏览器分配内存

3、内核创建并将浏览器进程装进内存

4、内核调动网络协议栈

5、调用网卡驱动访问网络

6、调用显卡渲染视频,调用声卡驱动将电信号转化为声信号

Linux目录结构

根目录

/为linux的根目录,系统中所有的文件都存储在根目录

家目录/root与/home

/rootroot用户的家目录,里面仅存放root用户的个人文件和环境配置(如SSH密钥、脚本),仅root用户可访问,普通用户无权查看或修改

/home是用户的家目录,每创建一个用户都会在该目录下为用户创建一个家目录

/etc系统配置目录

网卡配置

/etc/sysconfig/network-scripts目录下存放的是linux网卡的配置文件

仓库配置

/etc/yum.repos.d/CentOS-Base.repo 提供操作系统基础软件包,包含内核、系统库(glibc)、基础命令(coreutils)、系统服务(systemd)等。

/etc/yum.repos.d/CentOS-AppStream.repo提供应用软件和开发工具,包含编程语言(Python/PHP/Node.js)、数据库(MySQL/PostgreSQL)、容器工具(Podman)、开发库(如 GCC、Rust)及文档等。

/etc/yum.repos.d/CentOS-Extras.repo提供补充工具和第三方集成,包含云平台工具(如 cloud-init)、容器运行时(docker-ce 早期版本)、社区维护的实用工具(如 epel-release 的依赖包)等。

在这三个文件中的mirrorlist字段:指定一个动态生成的镜像服务器列表的 URL,包含多个 baseurl 地址(由官方或第三方维护),YUM 会从中自动选择最优镜像。

baseurl字段:直接指定软件仓库的固定访问地址,单点故障:若目标服务器不可用,需手动切换地址。

SELinux

SELinux(Security-Enhanced Linux)是美国国家安全局对于强访问控制的实现,与之相对还有自主访问控制。

SELinux有三种模式,disabled关闭SELinux、enforcing强制管控严格限制操作、permissive是SELinux生效但是会将各种操作记录下来以便审计。

SELinux的配置文件/etc/selinux/config中有SELINUXTYOE字段用于指定策略类型。

策略名称 说明
targeted 仅对“网络服务/守护进程”启用 SELinux 强制策略,对普通用户进程几乎不限制;是大多数发行版的默认选择,兼顾安全与易用。
strict 对系统中所有进程(包括普通用户 shell、应用程序等)都施加 SELinux 强制策略;最严格,也最容易产生拒绝访问,需要大量自定义规则,日常很少使用。
mls(Multi-Level Security) 在 targeted 或 strict 的基础上增加多级安全/保密级别(MLS/MCS),用于需要严格数据分级或军事/政企保密场景;日常桌面/服务器通常不会启用。

/var目录

var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的文件,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

  • /var/log:系统和服务日志(syslognginx/access.log),在能够写入日志的情况下可以写入木马获取shell
  • /var/lib:应用程序数据,mysql数据库、docker容器数据
  • /var/spool:队列数据(/var/spool/mail邮件队列)
  • /var/log/secure:安全认证日志(ssh登录建立日志)
  • /var/log/messages:核心系统日志(替代通用syslog)

大小会动态增长、目录中文件部分可删除、部分数据可能需要备份,一般大小可能有10G以上,建议单独分区存储

/tmp目录

存放临时文件的目录,全局可读写重启会清空。

可删除,比较小1G左右

/usr目录

usr(unix system resource)存放静态用户应用程序和文件

一般不可删除,文件静态只读

/boot目录

存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。

系统内核kernel除非在此目录中

/lib和/lib64目录

/lib目录存放32位系统核心库文件

/lib64存放64位系统的核心库文件

/bin与/sbin目录

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

s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。

文件

linux根据文件内容识别文件类别,若123.txt文件和111文件中写入了同样的内容系统会判断这两个文件类型相同。

touch创建文件

touch filename

可批量创建文件

touch file1 file2

mkdir创建目录

mkdir 目录名称或路径

CP复制

cp 某一文件 另一个文件或路径

cp -r 目录 目录

mv 移动文件/重命名文件

rm删除

rm -r 删除目录

rm -f 强制删除

rm -rf 强制删除目录(不提示)

文件备份

在文件后面加上.back后缀

CentOS-Extra.repo ==> CentOS-Extra.repo.back

cat与tail

cat filename,查看某一文件的全部内容

cat filename | less

tail命令,默认只查看文件末尾10行

选项 作用 示例
-n N-N 末尾 N tail -20 file
-n +N 从第 N 行开始一直显示到结尾 tail -n +100 huge.csv
-c N 末尾 N 字节 tail -c 1K image.iso
-f 实时跟踪文件增长(阻塞式) tail -f app.log
-F -f 的加强版,文件被轮转/重建后仍继续跟踪 tail -F /var/log/messages
-q 静默模式,多文件时不打印文件名 tail -q -n 1 *.log
--pid=PID 进程结束后自动退出 tail -f tail -f --pid=$(pgrep nginx) /var/log/nginx/error.log

其他查看文件命令

命令 说明 备注
cat 直接全部打印 适合小文件
tac 倒序打印(最后一行先出) cat 的反写
nl 带行号打印 nl file
bat/ccat 彩色高亮版 cat 需额外安装
命令 说明 常用键
less 上下翻页、搜索 q退出,/搜索
more 早期分页器,功能少 回车下一行,空格下一屏
most 多窗口分页器 需安装
命令 说明 示例
head 开头 N 行/字节 head -n 20 file
tail 结尾 N 行/字节,可实时跟踪 tail -f /var/log/messages
命令 说明 示例
hexdump -C 十六进制+ASCII 并列 hexdump -C binfile
xxd vim 自带十六进制查看 xxd file | less
od 八进制/十六进制转储 od -t x1 file

GNU计划

GNU计划是由理查德·斯托曼于1983年9月27日发起的自由软件协作项目,旨在创建完全自由的操作系统。该项目采用GNU通用公共许可证(GPL),允许用户自由使用、修改和分发软件,同时禁止添加额外限制。

斯托曼于1985年创立自由软件基金会(FSF)支持项目开发。至1990年,GNU已完成Emacs编辑器、GCC编译器等核心组件,但缺乏操作系统内核 。1991年林纳斯·托瓦兹开发出Linux内核后,1992年GNU工具与Linux结合形成完整的GNU/Linux操作系统。GNU自主开发的Hurd内核仍在持续开发中,其软件也被移植到Windows、Mac OS等平台。

GPL协议

GPL(通用公共许可证) 是一种广泛使用的开源软件许可证,旨在确保软件的自由使用、修改和分发权利。它由自由软件基金会(FSF)发布,强调软件的开放性和用户的自由。

核心特点

  1. 自由使用和分发:用户可以自由运行、复制和分发软件,包括商业用途,但必须遵守 GPL 的条款。
  2. 强制开源:任何基于 GPL 软件的修改或衍生作品都必须以 GPL 协议发布,并公开源代码。这种特性被称为“传染性”或“Copyleft”。
  3. 禁止闭源发布:如果软件使用了 GPL 代码,则整个软件必须开源,不能以闭源形式发布。
  4. 附带源代码:无论以何种形式发布软件,都必须同时提供源代码。例如,若通过网络分发二进制文件,需提供源代码的下载链接。
  5. 允许收费但需公开源码:开发者可以对软件的分发或服务收取费用,但必须无偿提供完整的源代码。
Author: wickt42
Link: http://example.com/2025/07/29/Linux系统基础/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.