当前位置: 首页 > news >正文

RHCA05--进程管理与文件系统管理

文章目录

    • 一、进程管理
      • 1. 进程
        • (1)ps命令
        • (2)ps命令结果讲解
        • (3)应用案例
        • (4)进程管理基础
        • (5)进程管理命令
        • (6)top命令
      • 2. 信号
        • (1)例题:文件操作进程信号应用
        • (2)例题:非正常关闭文件损坏问题
    • 二、进程管理及调优
      • 1. 进程信号管理
        • (1)信号的基本概念
        • (2)信号操作演示
        • (3)信号完整列表
        • (4)信号实践技巧
      • 2. 信号的作用
      • 3. kill命令
        • (1)命令对比
        • (2)安装与使用
      • 4. 查看与发送信号
        • (1)进程优先级
        • (2)信号综合应用
      • 5. 进程优先级
        • (1)Nice值概念
        • (2)Nice值查看方法
        • (3)Nice值调整方法
        • (4)Nice与renice的区别
        • (5)优先级调整的意义
      • 6. 应用案例
        • (1)例题:使用Nice调整程序优先级
      • 7. 进程优先级管理
        • (1)Nice与cgroup的区别
        • (2)后台进程管理
        • (3)实时优先级系统
      • 8. 静态优先级
        • (1)静态优先级演示
        • (2)例题:实时优先级查看
        • (3)例题:实时优先级设置
        • (4)实时优先级的参数
      • 9. 进程优先级设置问题解析
        • (1)Nice值与PR值的关系
        • (2)优先级设置实例
        • (3)常见问题解答
    • 三、文件系统管理
      • 1. 文件系统的构成
        • (1)基本组成结构
        • (2)inode详解
        • (3)文件操作原理
        • (4)快照技术原理
        • (5)文件识别机制
        • (6)重要特性说明
      • 2. 应用案例
        • (1)例题:文件操作
        • (2)例题:命令操作

一、进程管理

1. 进程

(1)ps命令
  • 基本概念:任何运行的命令都会成为一个进程,ps命令用于显示进程信息。

  • 命令区别

    • 直接使用ps:仅显示当前终端下的进程。
    • ps aux:显示系统所有进程,包括其他终端的进程。
  • 参数说明

    • a:显示所有用户的进程。
    • u:显示进程的拥有人信息。
    • x:显示进程的额外信息。
  • 输出字段解析

    • USER:进程拥有人。
    • PID:进程ID,每个进程运行时的唯一标识。
    • %CPU:CPU使用百分比。
    • %MEM:内存使用百分比。
    • VSZ:虚拟内存大小(Virtualization Size)。
    • RSS:真实内存大小(Resident Set Size)。
    • TTY:终端关联信息。
    • STAT:进程状态。
    • START:启动时间。
    • TIME:运行时间。
    • COMMAND:执行的命令。
  • 例题:ps aux命令示例

    • 内存类型说明
      • 虚拟内存:应用程序申请的内存空间。
      • 物理内存:实际分配的内存空间。
      • 类比:类似虚拟机磁盘的精简模式,按需分配实际空间。
  • 例题:火狐浏览器内存占用情况

    • 内存分析
      • 使用pmap 5208查看火狐浏览器进程内存。
      • 虚拟内存:约2GB(2142192KB)。
      • 物理内存:约260MB(266420KB)。
      • 说明:应用程序通常会申请比实际使用更多的虚拟内存空间。
    • 内存管理概念
      • 虚拟内存不是swap空间。
      • 从应用程序视角看,swap也属于物理内存。
      • 详细内存管理将在后续章节讲解。
(2)ps命令结果讲解
  • 进程与终端关系

    • 终端标识:TTY列显示进程运行的终端,问号表示进程不属于任何终端。
    • 虚拟内存与物理内存:VSZ表示虚拟内存使用量,RSS表示物理内存使用量。
    • 终端类型:
      • tty1-tty6:虚拟终端(通过Ctrl+Alt+F1-F6切换)。
      • pts/0、pts/1:伪终端(图形界面打开的终端或SSH连接)。
      • ttyS0:串口终端(COM口)。
  • 终端类型详解

    • 物理终端:直接连接主机的物理设备。
    • 虚拟终端:通过Ctrl+Alt+F1-F6切换的6个虚拟控制台。
    • 伪终端:
      • 图形界面中打开的终端窗口。
      • 通过SSH远程连接的终端(如pts/0、pts/1)。
    • 串口终端:通过串行接口连接的设备(如ttyS0)。
  • 系统进程分类

    • 终端相关进程:显示具体TTY值的进程(如bash、sshd等)。
    • 系统守护进程:
      • TTY显示为问号。
      • 在系统启动过程中产生(如systemd、kworker等)。
      • 不依赖任何终端存在。
    • 用户进程:
      • 通过终端启动的应用程序。
      • 关闭终端可能导致进程终止(除非使用nohup等方式)。
  • 进程状态解析

    • STAT列含义
      • S:可中断睡眠状态。
      • s:会话首进程。
      • +:位于前台进程组。
      • I:空闲的内核线程。
      • <:高优先级进程。
    • 常见进程示例
      • sshd:SSH守护进程。
      • bash:命令行解释器。
      • kworker:内核工作线程。
      • systemd:系统初始化进程。
(3)应用案例
  • 例题:vsftpd进程相关命令使用
    • 进程状态查询:使用systemctl status vsftpd命令可以查看vsftpd服务的详细状态信息,包括:
      • 服务是否已加载(Loaded)。
      • 是否开机自启(enabled)。
      • 当前运行状态(Active)。
      • 主进程ID(Main PID)。
      • 内存和CPU使用情况。
    • 终端关联性
      • 问号(?)表示该进程不属于任何终端,通常是系统服务进程。
      • 开机自启的进程通常没有关联终端。
      • 当前终端可通过ps命令查看,如pts/1表示第一个伪终端。
    • 进程状态解析
      • S(sleep):休眠状态,进程正在等待任务。
      • I(interactive):交互式进程,正在等待任务执行。
      • <:表示高优先级进程。
      • N:表示低优先级进程。
      • s:表示该进程是会话首进程。
    • 时间统计说明
      • START字段显示进程启动时间。
      • TIME字段显示进程实际占用CPU的时间总和。
      • 系统服务进程的TIME通常显示为0,因为:
        • 只在有请求时才会激活。
        • 统计的是实际处理请求的时间,而非总运行时间。
        • 休眠期间不计入CPU时间。
    • 内存相关指标
      • VSZ:虚拟内存使用量(KB)。
      • RSS:实际物理内存使用量(KB)。
      • 通过ps aux命令可以查看这些内存指标。
    • 特殊符号含义
      • <和N等符号与进程优先级相关。
      • 高优先级进程能更快获得CPU资源。
      • 系统内核进程通常具有较高优先级。
(4)进程管理基础
  • 进程基本概念

    • 本质:加载到内存中的一段指令。
    • 标识方式:
      • 通过PID唯一标识进程。
      • 通过UID/GID和SELinux上下文决定文件系统存取权限。
    • 权限继承:
      • 通常继承执行用户的权限。
      • 子进程会继承父进程的属性信息。
  • 进程查看命令

    • ps命令
      • 常用参数组合:
        • ps aux:查看所有终端进程及所有者信息。
        • ps -ef:查看系统所有进程及额外信息。
      • 排序功能:
        • –sort=-%mem:按内存使用率降序排列。
        • –sort=-%cpu:按CPU使用率降序排列。
      • 实际案例:
        • 执行vim /etc/passwd会产生新进程。
        • 进程结束时会立即从内存释放。
    • top命令
      • 运行状态标识:
        • R (Running):表示正在运行的进程。
        • S (Sleeping):表示休眠状态的进程。
      • 交互指令:
        • 数字1:显示多核CPU详情。
        • c:显示完整命令路径。
        • top -n 2:只刷新2次后自动退出。
      • 系统概览:
        • 显示总进程数及状态分布。
        • 实时更新CPU/内存使用情况。
  • 进程生命周期

    • 创建机制:
      • 通过fork创建子进程。
      • 通过exec加载新程序。
    • 终止过程:
      • 正常退出会发送exit信号。
      • 可能进入zombie(僵尸)状态。
    • 父子关系:
      • 子进程终止时会向父进程发送wait信号。
      • 父进程需要正确处理子进程终止。
(5)进程管理命令
  • ps命令详解

    • 基本参数:
      • a: 查看所有终端的进程。
      • u: 打印进程所有者信息。
      • x: 查看不属于任何终端的进程。
      • e: 查看系统所有进程。
      • f: 查看额外的完整信息。
      • o: 指定格式输出。
    • 排序功能:
      • –sort: 指定排序参数,例如--sort=-%mem按内存使用降序排列。
    • 常用组合: ps auxps -ef是最常用的查看进程命令组合。
  • 进程状态解析

    • 状态标识:
      • D: 不可中断睡眠(通常是在IO操作)。
      • R: 正在运行或可运行(在运行队列排队中)。
      • S: 可中断睡眠(休眠中,受阻)。
      • T: 已停止的进程。
      • Z: 僵尸进程(进程已终止但描述符存在)。
      • <: 高优先级进程。
      • N: 低优先级进程。
      • L: 页面锁定在内存。
      • s: 会话首进程。
      • l: 多线程进程。
      • +: 前台进程组。
  • 进程排序实践

    • 排序方法:
      • 内存排序: ps aux --sort=-%mem (降序排列)。
      • CPU排序: ps aux --sort=-%cpu (降序排列)。
    • 注意: 不加排序参数时,输出不会自动按资源使用排序。
  • IO监控工具

    • 专用工具:
      • iotop: 专门用于监控磁盘IO的工具。
    • 特点: 按IO大小排序显示进程IO使用情况。
    • 与ps区别: 普通ps命令不显示IO信息,需使用专门工具。
  • 命令输出字段

    • 关键字段:
      • USER: 进程所有者。
      • PID: 进程ID。
      • %CPU: CPU占用百分比。
      • %MEM: 内存占用百分比。
      • VSZ: 虚拟内存大小。
      • RSS: 实际使用的物理内存。
      • STAT: 进程状态。
      • START: 进程启动时间。
      • TIME: 累计CPU使用时间。
      • COMMAND: 启动命令。
(6)top命令
  • 基本功能与选项

    • 刷新间隔设置:
      • 使用-d选项指定刷新间隔时间,默认3秒刷新一次。
      • 交互模式下按s键可实时修改刷新频率。
      • 示例:top -d 2设置为2秒刷新一次。
    • 进程监控:
      • -p选项可指定监控单个进程ID。
      • 示例:top -p 830只监控PID为830的进程。
      • 示例:top -p 1只监控系统初始进程。
    • CPU状态显示:
      • 可显示CPU等待时间百分比(St状态)。
      • 按数字1键可切换显示各逻辑CPU核心的使用情况。
  • 交互命令操作

    • 显示控制:
      • c键:切换显示完整命令行或命令名称。
      • f键:自定义显示字段内容。
    • 排序功能:
      • M键:按内存占用百分比排序。
      • P键:按CPU使用百分比排序。
      • T键:按进程运行时间/累计时间排序。
    • 操作示例:
      • 按c键可查看进程的完整启动命令。
      • 按M键可快速找出内存占用最高的进程。
      • 按数字1键可查看多核CPU每个核心的负载情况。
  • 动态监控特点

    • 与ps命令对比:
      • ps提供静态进程快照。
      • top提供实时动态监控界面。
      • top更适合持续观察系统资源变化。
    • 界面元素说明:
      • 顶部显示系统运行时间、用户数、平均负载。
      • 中间显示CPU和内存使用情况。
      • 底部显示详细的进程列表。
  • 例题:top命令示例

    • 操作演示:
      • 通过top -d 2设置2秒刷新频率。
      • 使用top -p 830监控特定进程。
      • 交互模式下按M键按内存排序。
    • 注意事项:
      • 默认刷新间隔为3秒,可通过-d修改。
      • 监控单个进程时界面只显示该进程信息。
      • 排序功能帮助快速定位资源占用高的进程。

2. 信号

  • 定义:信号是Linux系统中进程间通信的一种方式,用于通知进程发生了某个事件。
  • 特点
    • 直接给进程发送信号,不需要用户界面。
    • 通过名称或数字标识不同信号。
  • 常用信号
    • 15(TERM):正常终止进程(默认信号)。
    • 9(KILL):立即强制终止进程。
    • 1(HUP):让进程重新读取配置文件。
  • 可通过man 7 signal查看完整信号列表。
(1)例题:文件操作进程信号应用
  • 操作流程
    • 使用vim编辑文件时会产生进程。
    • 通过ps aux | grep vim查找进程ID(如1562)。
  • 发送信号
    • kill -15 1562:正常终止。
    • kill 1562:默认发送15信号。
  • 正常终止表现
    • 进程收到TERM信号。
    • 文件修改内容会正常保存。
    • 系统显示"Vim: Finished"提示。
(2)例题:非正常关闭文件损坏问题
  • 强制终止操作
    • 使用kill -9 进程ID立即终止。
    • 示例:kill -9 1569
  • 问题表现
    • 文件非正常关闭。
    • 产生.swp交换文件(如passwd.swp)。
    • 再次打开文件时内容混乱或无法打开。
  • 关键区别
    • 信号15:允许进程完成清理工作后再终止。
    • 信号9:立即终止,不执行任何清理。
  • 使用建议
    • 优先使用信号15正常终止。
    • 仅在进程无响应时使用信号9。
    • 强制终止可能导致数据丢失或文件损坏。
  • 发送方式
    • 通过PID:kill [signal] pid...
    • 通过名称:killall [signal] comm...
    • 通过模式:pkill [-signal] pattern
  • 其他信号
    • 信号19:暂停进程。
    • 信号23:恢复暂停的进程。
    • 可通过数字或名称指定信号。

二、进程管理及调优

1. 进程信号管理

(1)信号的基本概念
  • 信号本质:对进程的任何操作本质上都是通过发送信号实现的,无需用户界面交互。
  • 信号标识:可通过名称(如SIGTERM)或数字(如15)来指定信号。
  • 常见信号:
    • Signal 15 (TERM):正常终止进程(默认信号)。
    • Signal 9 (KILL):立即强制终止进程。
    • Signal 1 (HUP):让进程重新读取配置文件。
    • Signal 19 (STOP):暂停进程执行。
(2)信号操作演示
  • 进程终止示例
    • 普通终止:使用kill -15 1562发送TERM信号终止vim进程。
    • 强制终止:当普通终止无效时,使用kill -9 1569发送KILL信号强制终止。
    • 验证方法:通过ps aux | grep vim命令确认进程状态变化。
  • 进程暂停与恢复
    • 暂停进程:执行cp -i -r /usr/ /tmp/时,使用kill -19 1599发送STOP信号暂停复制操作。
    • 查看状态:通过jobs命令可查看被暂停的进程状态显示为"Stopped"。
    • 信号特性:某些信号如SIGKILL(9)和SIGSTOP不能被捕获、阻塞或忽略。
(3)信号完整列表
  • 查看方式:使用man 7 signal命令查看系统所有信号定义。
  • 重要信号:
    • SIGCONT (18,25):恢复被暂停的进程。
    • SIGTSTP (20):终端停止信号。
    • SIGCHLD:子进程终止或停止时发送。
  • 信号动作类型:
    • Term:终止进程。
    • Core:终止并生成core dump。
    • Stop:暂停进程。
    • Cont:恢复被暂停的进程。
(4)信号实践技巧
  • 进程恢复:对暂停的进程发送CONT信号(如kill -18 1599)可使其继续执行。
  • 多信号等效:某些信号如STOP对应多个数字(17/19/23),效果相同。
  • 信号管理本质:所有进程控制操作最终都转换为特定信号的发送。
  • 注意事项:
    • 重要进程应避免使用SIGKILL(9),可能导致数据损坏。
    • 服务进程常用SIGHUP(1)实现配置重载。
    • 交互式程序应处理SIGTSTP(20)实现后台运行。

2. 信号的作用

  • 多进程管理场景:适用于需要同时管理一个服务产生的多个进程的情况(如httpd服务产生21516/1718等多个进程)。
  • 传统方式缺陷:使用普通kill命令需要逐个终止进程ID,操作繁琐。
  • 信号默认值:当不指定信号类型时,默认使用15号信号(SIGTERM)。

3. kill命令

(1)命令对比
  • kill:必须指定进程ID,如kill 21516
  • killall:通过命令名称操作,如killall httpd
  • pkill:综合型命令,支持进程ID或命令名两种操作方式。
(2)安装与使用
  • 依赖安装:需要先安装killall对应的软件包(课程中演示安装kr o包)。
  • 操作验证:通过反复启动/终止httpd服务验证命令效果,确认进程被批量终止。

4. 查看与发送信号

(1)进程优先级
  • 基础概念:与C1课程内容衔接,涉及进程的nice值调整。
  • 应用场景:系统资源分配时,可通过调整优先级优化关键进程的执行效率。
(2)信号综合应用
  • 参数位置:信号编号作为可选参数位于命令中间位置。
  • 操作建议:推荐使用pkill作为通用解决方案,兼具kill和killall的功能优势。

5. 进程优先级

(1)Nice值概念
  • 取值范围:Linux系统中Nice值的范围是-20到19,数值越小表示优先级越高。
  • 默认值:当进程运行时未指定优先级,Nice值默认为0。
  • 优先级关系:低的Nice值对应高的CPU优先级,例如-20的优先级高于19。
(2)Nice值查看方法
  • 查看命令:使用ps -aXO PID,Niceps -lO PID,Nice命令。
  • 示例输出:可以看到各进程的Nice值,如FTP进程通常显示为0。
(3)Nice值调整方法
  • 启动时指定
    • 命令格式:nice -n <优先级值> <命令>
    • 示例:nice -n -10 vim会以Nice值-10启动vim。
    • 特点:仅适用于新启动的进程。
  • 运行中调整
    • 命令格式:renice <优先级值> -p <PID>
    • 示例:renice -20 830将PID为830的进程优先级调整为-20。
    • 特点:可以实时修改已运行进程的优先级。
(4)Nice与renice的区别
  • 应用时机
    • nice:用于指定新启动进程的优先级。
    • renice:用于调整已运行进程的优先级。
  • 实际效果:两者最终都能改变进程的CPU资源分配比例。
(5)优先级调整的意义
  • 资源分配:通过调整Nice值可以让重要进程获得更多CPU资源。
  • 系统优化:合理设置优先级可以优化系统性能,确保关键任务优先执行。

6. 应用案例

(1)例题:使用Nice调整程序优先级
  • 优先级调整演示
    • 初始状态:四个进程平等运行,各占25% CPU资源。
    • 调整过程:将进程三零七四的nice值设为-20(最高优先级)。
  • 优先级效果验证
    • 调整后:三零七四进程独占100% CPU资源。
    • 其他进程:共享剩余处理器资源。
    • 对比数据:从平均分配到优先级独占的明显变化。
  • nice值作用原理
    • 取值范围:-20(最高优先级)到19(最低优先级)。
    • 实际效果:值越小优先级越高,CPU分配比例越大。
    • 系统表现:高优先级进程可抢占多个处理器资源。
  • 操作命令示例
    • 设置优先级:nice -n -20 三零七四
    • 终止进程:kill %1 %2 %3 %4(演示结束后的清理操作)。
  • 实验结论
    • 优先级调整对CPU资源分配有直接影响。
    • 合理设置nice值可优化多任务处理效率。
    • 系统管理员可通过nice值管理关键进程资源。

注:本案例通过实时系统演示验证了进程优先级的实际作用效果,展示了从初始状态到调整后的完整对比过程,包含具体的数值变化和系统响应表现。

7. 进程优先级管理

(1)Nice与cgroup的区别
  • 功能差异
    • Nice仅调整进程的CPU优先级(范围-20到19)。
    • cgroup可管理CPU、内存、磁盘IO等多维度资源。
  • 应用场景
    • Nice适合临时性优先级调整(如测试环境)。
    • cgroup适合长期资源分配(如生产环境服务/容器)。
  • 权限控制
    • root用户可自由调整nice值(包括提高优先级)。
    • 普通用户只能降低自身进程优先级(增大nice值)。
(2)后台进程管理
  • 操作命令
    • command &:直接后台运行。
    • Ctrl+Z:暂停并放入后台(相当于发送SIGTSTP信号)。
    • bg %n:将暂停的作业转为后台运行。
    • fg %n:将后台作业调至前台。
    • jobs:查看所有后台任务。
  • 信号机制
    • 后台暂停对应信号19(SIGSTOP)。
    • 前后台切换本质是信号控制过程。
(3)实时优先级系统
  • 优先级体系对比
    • 动态优先级(平民)
      • nice值范围:-20到19。
      • 数字越小优先级越高。
      • 共40个优先级级别。
    • 静态优先级(贵族)
      • 实时优先级范围:1到99。
      • 数字越大优先级越高。
      • 动态优先级对其等效为0。
  • 调度策略
    • FIFO策略
      • 先进先出,独占式执行。
      • 类比:厕所独占使用模式。
    • RR策略
      • 时间片轮转(默认100ms)。
      • 高优先级获得更长时间片。
      • 类比:轮流使用厕所的计时模式。
  • 管理命令
    • chrt命令
      • chrt -p <pid>:查看实时优先级。
      • chrt -f -p <priority> <pid>:设置为FIFO策略。
      • chrt -r -p <priority> <pid>:设置为RR策略。
  • 注意事项
    • 实时进程可能造成系统饥饿。
    • 需要root权限设置实时优先级。

8. 静态优先级

(1)静态优先级演示
  • CPU核心数与优先级基础
    • CPU核心识别:在红帽5系统中,通过编号0、1、2、3确认系统有4个CPU核心。
    • top命令验证:运行top命令可查看CPU使用率,当CPU使用率达到100%时系统会出现明显卡顿。
  • 先进先出(FIFO)调度策略
    • 优先级抢占机制
      • 高优先级进程会抢占低优先级进程的资源。
      • 被抢占的进程会重新排队到优先级队列头部。
      • 当有进程结束时,队列头部的进程将获得运行机会。
    • 极端案例演示
      • 设置4个FIFO优先级进程后系统完全卡死。
      • 说明FIFO进程未结束前其他进程无法获取资源。
      • 与普通优先级(nice)进程的区别:普通优先级下运行5个进程仍不会死机。
  • 实时优先级设置
    • chrt命令语法
      • chrt -f [优先级] [命令]:设置先进先出策略。
      • chrt -p [优先级] [PID]:修改已有进程优先级。
    • 优先级范围:1-99(数字越大优先级越高)。
  • 优先级动态调整
    • 更高优先级进程可以抢占正在运行的低优先级进程。
    • 被抢占进程会保留在队列最前面等待下次调度。
  • 系统进程分类
    • 实时进程:使用FIFO或RR策略。
    • 普通进程(Other):动态优先级为0,相当于没有特权。
  • 轮询(RR)调度策略
    • 时间片分配
      • 相同优先级的RR进程采用轮询方式分配时间片。
      • 每个进程获得固定时间片(如5毫秒)。
    • 时间片耗尽处理
      • 进程用完时间片后会被移到队列末尾。
      • 需等待其他进程运行完毕才能再次获得时间片。
    • 优先级影响
      • 高优先级RR进程能获得更长的时间片。
      • 但不会像FIFO那样完全独占CPU资源。
  • 系统进程优先级查看
    • PR值含义
      • 在进程列表中PR字段表示进程的调度策略。
      • FIFO进程会有特殊标识。
    • 权限限制
      • 某些系统进程不允许修改优先级。
      • 尝试修改时会出现"操作不被允许"提示。
(2)例题:实时优先级查看
  • 实时优先级显示规则
    • PR值含义:在top命令中显示的PR值代表进程优先级,数字越小表示优先级越高。
    • 实时优先级标识:rt表示实时优先级,其优先级数值范围特殊。
    • 数值转换规则
      • 系统显示值 = 140 - 设置值。
      • 例如:设置值为50时,系统显示为-51(140-50=90,但实际显示为-51,说明有特殊转换规则)。
      • 最高优先级:设置99显示为-100,设置98显示为-99。
    • Nice值关系
      • Nice值-20对应PR值0。
      • Nice值-19对应PR值1。
      • 说明Nice值与PR值存在线性关系。
  • 优先级显示特性
    • 显示与设置差异
      • 人为设置值:1-99,数字越大优先级越高。
      • 系统显示值:数字越小优先级越高(如-99比-20优先级高)。
    • 取值范围
      • 实时优先级最高显示值:-99。
      • 普通优先级范围:正数(如20表示低优先级)。
(3)例题:实时优先级设置
  • chrt命令使用
    • 基本语法chrt -f <优先级> <命令>
    • -f 参数表示设置实时优先级。
    • 优先级范围:1-99。
  • 设置问题
    • 实验中出现设置失败情况(如chrt -f 11 md5sum /dev/zero)。
    • 原因:系统参数限制导致。
  • 解决方案
    • 需要调整系统参数后才能设置高优先级。
    • 成功案例:chrt -f 10 -p 3376(设置进程3376的优先级为10)。
  • 优先级设置原理
    • 数值转换验证
      • 设置50 → 显示-51。
      • 设置90 → 显示-91。
      • 设置99 → 显示-100(最高优先级)。
    • 系统限制
      • 某些情况下无法直接设置最高优先级。
      • 需要先修改系统参数(具体参数未明确说明,但演示中通过调整后设置成功)。
(4)实时优先级的参数
  • 实时优先级的时间分配
    • 默认值:系统默认分配给实时优先级的运行时间为0.095秒/秒(即95毫秒/秒),其余时间分配给普通进程。
    • 单位:参数rt_runtime_us以微秒为单位设置。
    • 保护机制:系统会限制实时优先级的运行时间,避免其耗尽所有CPU资源。
  • 实时优先级的危险设置
    • 负一设置:将参数设为-1表示不限制实时优先级的运行时间。
    • 系统影响
      • 可能导致系统资源被完全占用(特别是双核CPU环境)。
      • 红帽5系统会因此死机,红帽7及以上版本有保护机制。
      • 实际表现为系统响应几乎停滞。
  • 实时优先级的类型
    • FIFO(先进先出)
      • 进程必须完全执行完毕才会释放CPU。
      • 危险性较高,可能造成系统资源独占。
    • RR(轮询)
      • 采用时间片轮转方式。
      • 相比FIFO更安全。
  • 优先级范围:实时优先级范围为1-99,远高于普通进程的-20到19。
  • 优先级比较规则
    • 绝对优势:任何实时优先级(1-99)都高于普通进程(视为0)。
    • 同类型比较
      • 相同优先级时,FIFO高于RR。
      • 不同优先级时,数值大的优先级更高(如RR12 > FIFO11)。
  • 系统默认配置
    • 系统进程:部分关键系统进程默认配置为FIFO 99优先级。
    • 查看方法:使用chrt -p <PID>命令查看进程的调度策略和优先级。
    • 设计目的:确保核心系统功能不受应用程序影响。
  • 服务配置方法
    • 配置文件/etc/systemd/system/<service>.service.d/*.conf
    • 配置语法:在[Service]段添加CPUAccounting=1CPUSchedulingPolicy=fifo|rr
    • 持久化:通过systemd配置可实现开机自动应用优先级设置。
  • 使用注意事项
    • 安全建议:生产环境慎用实时优先级,特别是FIFO策略。
    • 故障恢复:错误设置可能导致系统无法响应,需强制重启。
    • 资源平衡:需要合理分配实时优先级的时间配额,避免系统资源耗尽。

9. 进程优先级设置问题解析

(1)Nice值与PR值的关系
  • Nice值转换规则
    • 当Nice值设为0时,PR值显示为20。
    • Nice值设为-20时,PR值对应为0。
    • Nice值设为10时,PR值显示为-10。
    • 示例:设置Nice为98时,PR值显示为-99。
  • 优先级判断标准
    • 系统最终比较的是PR值(优先级数值),而非Nice值。
    • PR值越小表示优先级越高(如-99比0优先级高)。
    • 单纯比较Nice值可能得出错误结论,必须通过PR值判断。
(2)优先级设置实例
  • 设置验证
    • 设置Nice为-20 → PR值显示0(最高优先级)。
    • 设置Nice为0 → PR值显示20(默认优先级)。
    • 设置Nice为20 → PR值显示-20(最低优先级)。
  • 调度影响
    • 高优先级进程(PR值小的)会获得更多CPU时间片。
    • 系统会优先运行PR值较小的进程。
    • 静态优先级最终都反映在PR值上。
(3)常见问题解答
  • 显示异常解释
    • 设置98显示-99属于正常现象,这是Nice值到PR值的转换结果。
    • 默认Nice值为-1时对应特定PR值。
  • 注意事项
    • 先进先出(FIFO)调度策略不会改变Nice值。
    • 优先级比较必须通过PR值进行,这是系统最终采用的优先级标准。
    • 修改Nice值实质是通过影响PR值来改变进程优先级。

三、文件系统管理

1. 文件系统的构成

(1)基本组成结构
  • 双组件结构:文件系统由两部分组成,分别是inode(索引节点)和block(数据块)。
  • 功能分工
    • inode存储元数据(metadata)。
    • block存储实际数据内容(如"hello world"等具体数据)。
(2)inode详解
  • 全称解释:inode是"index disk node"的缩写,本质是文件的索引结构。
  • 存储内容
    • 文件大小、权限信息。
    • 三个时间戳(atime访问时间、mtime修改时间、ctime状态变更时间)。
    • 文件类型。
      -数据块指针(指向实际存储位置的指针)
  • 注意:文件名不存储在inode中,而是记录在目录的inode里
(3)文件操作原理
  • 操作本质:大多数文件操作实际上是对inode的操作而非数据块。
  • 示例1:快照功能通过操作inode实现快速创建。
  • 示例2:备份系统通过检查mtime/ctime判断文件是否需要备份。
  • 示例3:删除文件时仅删除inode,数据块仍保留(因此可能恢复)。
(4)快照技术原理
  • COW机制:Copy-On-Write(写时复制)是快照的核心技术。
  • 工作流程
    1. 创建快照时备份inode信息。
    2. 当修改文件时,先将原数据块复制到COW专用区域。
    3. 新数据写入原位置,inode指针更新指向新数据。
    4. 快照保持指向COW区域的旧数据。
  • 优势:保证数据一致性且不影响性能。
(5)文件识别机制
  • 双重标识系统
    • 人类通过文件名识别文件。
    • 系统通过inode编号(可通过ls -li查看)识别文件。
  • 编号规则
    • 每个文件系统有独立的inode编号体系。
    • 跨分区复制文件会生成新的inode编号。
    • 同分区内复制也会分配新inode(采用"补缺"机制而非"增补")。
(6)重要特性说明
  • 关键限制
    • 文件系统的inode数量在格式化时固定。
    • 每个inode占用512字节空间。
    • 当inode耗尽时即使有剩余空间也无法创建新文件。
  • 恢复限制
    • 删除文件后若新文件占用相同inode,原数据将永久丢失。
    • 设计原理:避免已删除文件持续占用存储空间。

2. 应用案例

(1)例题:文件操作
  • 同分区文件移动原理
    • 当文件在同一个分区内移动时(如从/data目录剪切到/rehead目录),索引号870692保持不变。
    • 原因:实际只移动了目录索引,数据块未发生物理移动。
    • 优势:即使移动10GB大文件也仅需1秒,因为仅修改目录索引信息。
  • 目录索引机制
    • 文件名的索引记录在所属目录的索引信息中。
    • 每个目录都有独立的索引结构。
    • 移动操作实质是修改父目录的索引指向。
  • 跨分区移动特性
    • 当文件跨分区移动(如从/rehead到/boot)时:
      • 索引号必定改变(使用目标分区的索引机制)。
      • 实际执行"复制+删除"操作。
      • 数据块会发生物理复制。
(2)例题:命令操作
  • 硬链接原理
    • 创建命令ln 源文件 硬链接文件
    • 特征
      • 索引号与源文件相同(如示例中均为870692)。
      • 链接计数会增加(如从1变为2)。
      • 修改任一链接都会同步内容。
      • 删除源文件不影响其他硬链接访问。
    • 硬链接限制
      • 不能跨分区创建(因不同分区索引系统独立)。
      • 本质是给同一数据块创建多个目录入口。
  • 软链接特性
    • 创建命令ln -s 源文件 软链接文件
    • 与硬链接的区别:(原文未详细说明具体区别)
  • 应用场景选择
    • 需要保证文件持续可用 → 硬链接。
    • 需要跨分区引用 → 软链接。
    • 需要节省存储空间 → 软链接。
http://www.lryc.cn/news/610913.html

相关文章:

  • 数据结构(01)—— 数据结构的基本概念
  • 应用科普 | 漫谈6G通信的未来
  • 【技术教程】如何将 ONLYOFFICE 文档连接到 Confluence
  • 坚鹏:AI智能体软件是知行学成为AI智能体创新应用引领者的抓手
  • Fiddler 中文版实战指南,如何构建高效的 API 调试工作流?
  • Z20K118库中寄存器及其库函数封装-ADC库
  • Linux操作系统从入门到实战(十三)版本控制器Git基础概念讲解
  • 自抗扰ADCR--跟踪微分器的作用
  • sqli-labs通关笔记-第32关 GET宽字符注入(单引号闭合 手工注入+脚本注入两种方法)
  • Android 中几种常用布局的优缺点
  • 如何在nuxt项目中使用scss
  • 自动驾驶中的传感器技术24——Camera(15)
  • AI智能体的安全困境:防护机制与伦理平衡的艺术
  • PostgreSQL bytea 类型的大小限制
  • fastgpt本地运行起来的 服务配置
  • SELinux加固Linux安全
  • 基于Django的计算机资源爬虫及可视化系统的设计与实现
  • 开源密码恢复实用程序 Hashcat 7.0.0 发布
  • 最新安卓原生对接苹果cms App后端+app(最新优化版)
  • QML开发:QML的第一个程序
  • echarts在前后端分离项目中的实践与应用
  • C# --- 本地缓存失效形成缓存击穿触发限流
  • RHCA04--系统模块管理与资源限制
  • 武汉火影数字:VR大空间在文旅产业的创新应用
  • TDengine 中 TDgpt 的模型评估工具
  • VR眼动追踪技术帮助医生更快速确认大脑神经损伤与疾病
  • 与功能包相关的指令ros2 pkg
  • Reading Books(Sorting and Searching)
  • 工作相关: 预刷真值与人工标注的真值之间的关系 以及 真值与原始数据的关系,
  • Node.js高并发下的内存泄漏排查与解决实录