一、缓存与缓冲的区别

在这里插入图片描述

类型 核心用途 作用
缓冲区 核心是 “辅助写入 / 传输” 通过暂存数据实现 “批量处理”,缓解不同设备(如 CPU 与磁盘、网络两端)的速度差异,减少频繁 I/O 损耗(比如硬盘控制器先缓存数据再批量写入,视频播放前预加载缓冲)。本质是 “调和速度差的暂存机制”,数据多为临时待处理,断电易丢失。
缓存区 核心是 “辅助读取 / 复用” 通过将高频访问的数据暂存到高速存储(如内存),避免重复从低速设备(如磁盘)读取,直接复用数据提升速度(比如 CPU 的高速缓存、Redis 缓存热点数据)。本质是 “高频数据的复用机制”,数据多为已读的重复访问内容,追求快速命中。
SWAP 内存扩展 当物理内存被占满,新程序或数据放不下时,操作系统会自动启动 SWAP。然后把内存中 “暂时不用” 的数据(比如后台休眠的程序、很久没访问的文件)转移到磁盘的 SWAP 分区中,释放物理内存给 “正在活跃” 的程序用。如果之后需要用到 SWAP 里的数据,再把它从磁盘挪回物理内存。

SWAP和缓冲、缓存的本质区别:

缓冲、缓存是为了 “加速”(缓冲优化写入效率,缓存优化读取速度),而 SWAP 是为了 “救急”—— 它不提升速度,反而因为依赖磁盘(速度比内存慢很多),频繁使用会让系统变卡(比如打开程序、切换任务时卡顿),但能避免内存不足导致程序崩溃。

二、资源管理与运维工具

2.1 top 命令:实时资源监控(核心)

2.1.1 基本语法与常用选项

top 命令的基本语法为top [options],常用选项可满足不同监控场景,具体如下:

-d <seconds>:设置屏幕刷新间隔(默认 3 秒),例top -d 5(每 5 秒刷新),该命令会每 5 秒刷新一次信息;

-n <number>:设置输出更新次数,例top -n 10(显示 10 次后退出);

-b:批处理模式(无交互界面,适用于保存输出),例top -b -n 1 > top_output.txt

-u <username>:仅显示指定用户进程,例top -u root(只显示 root 用户进程);

-p <pid>:仅显示指定 PID 进程,例top -p 1234(只显示 PID 为 1234 的进程)。

2.1.2 top 全屏操作快捷键

top 默认 3 秒刷新,全屏界面快捷键如下:

s修改刷新时间,按空格立即刷新;

P按 CPU 排序、M按内存排序、T按时间排序;

p输入 PID 查看单个进程状态,N按启动时间排序;

数字键1显示每个内核 CPU 使用率,u/U指定显示用户;

h获取在线帮助,q正常退出;

若进程 CPU 占用过高,按k输入 PID 并确认可终止进程。

2.2 htop

2.3 ps 命令:查看进程状态

通过ps -aux | grep 进程标识查看进程状态。
在这里插入图片描述

常见状态含义:

S(睡眠状态):前台运行时带+,例:在终端 1 执行vi a.txt,终端 2 执行ps -aux | grep a.txt

T(停止状态):在vi a.txt终端按Ctrl+Z挂起后,再次执行ps -aux | grep a.txt,进程状态变为T

2.4 pgrep 与 pstree:精准查询进程

(1)pgrep 命令:按条件查询进程信息

-l输出对应的进程名以及PID

-U查询特定用户的进程

-t查询在特定终端运行的进程

示例:

#查看含“log”的进程名以及PID
pgrep -l "log" 

在这里插入图片描述

#查找root用户运行在tty1终端的进程,并显示进程ID和对应的进程名
pgrep -l -U root -t tty1

在这里插入图片描述

(2)pstree 命令:以树形结构列出进程信息

-p列出对应的PID号,

-U列出对应的用户名

-a列出完整的命令信息

#执行pstree -aup可查看系统进程树,能发现 systemd 是所有进程的 “始祖”
pstree -aup

在这里插入图片描述

2.5 进程启动方式

2.5.1 手工启动(前台 / 后台)

前台启动,直接输入命令,进程占用终端,需等待执行结束才能继续操作。

ls -l(查看目录列表,结束后返回提示符)。

适用于多数短耗时基础命令。

后台启动,命令末尾加 &,进程不占终端,可同时执行其他操作。

cp /dev/cdrom /home/cetos7.iso &

适用于长耗时任务(如光盘镜像制作)。

2.5.2 调度启动(自动执行)
调度工具 功能描述 文档实例 特点
at 命令 设置一次性计划任务,到指定时间自动执行 12:15 重启网络服务(at 12:15 后输重启命令) 仅执行一次,后台运行
crontab 命令 设置周期性计划任务,按 “分 / 时 / 日 / 月 / 周” 重复执行 每周五 17:30 备份数据库(后续 3.3 节详说) 循环执行,后台运行

2.6 进程前后台调度

2.6.1 挂起前台进程

前台进程运行中按 Ctrl+Z,进程转入后台并停止。

实例:vi 1.txt 执行时按 Ctrl+Z,提示 [1]+ 已停止 vi a.txt
在这里插入图片描述

2.6.2 查看后台任务(jobs命令):

jobs:查看后台任务列表(仅任务编号与状态)
在这里插入图片描述

jobs -l:额外显示进程 PID
在这里插入图片描述

2.6.3 恢复后台进程( bg / fg)

bg <任务编号>:可以将后台中暂停执行(如按 Ctrl+Z 组合键挂起)的任务恢复运行,继续在后台执行操作

fg <任务编号>:可以将后台任务重新恢复到前台运行

除非后台中的任务只有一个,否则 bgfg 命令都需要指定后台进程的任务编号作。

2.7 终止进程执行

2.7.1 前台进程中断

当用户在前台执行某个进程时,可以按Ctrl+C组合键强制进行中断(如命令长时间没有响应的情况下)。

中断前台进程的运行后,系统将返回命令行提示符状态等待用户输入新的命令。

当按Ctrl+C组合键无法终止程序或者需要结束在其他终端或后台运行的进程时,可以使用专用的进程终止工具killkillallpkill

2.7.2 kill 命令

通过kill命令终止进程时,需要使用进程的 PID 号作为参数。

kill <PID>(正常终止)
kill -9 <PID>(强制终止)
2.7.3 killall 命令

使用killall命令可以通过进程名称来终止进程,当需要结束系统中多个相同名称的进程时,使用killall命令将更加方便,效率更高。

killall <进程名>(正常终止)
killall -9 <进程名>(强制终止)

#强制终止所有 vim 进程:
killall -9 vim
2.7.4 pkill 命令

使用pkill命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性终止特定的进程,大部分选项与pgrep命令基本类似。

-l:输出对应的进程名以及PID
-U:查询特定用户的进程
-t:查询在特定终端运行的进程

#终止用户 hmj 所有进程
pkill -9 -U hmj

三、 周期性计划任务(crontab)

crontab 用于按预设周期重复执行命令,所有任务后台运行。

格式:分钟 小时 日期 月份 星期 命令,字段含义及取值范围严格遵循文档:

字段 取值范围 说明
分钟 0~59 每小时的第 N 分钟
小时 0~23 每天的第 N 小时(0 代表凌晨)
日期 1~31 每月的第 N 天(需与月份匹配,如 2 月无 30 日)
月份 1~12 每年的第 N 月
星期 0~7 每周的第 N 天(0 或 7 代表星期日)
命令 - 需执行的命令 / 脚本(建议用绝对路径,避免路径依赖)
时间符号用法
符号 功能描述 实例
* 匹配该字段所有值 * * * * *(每分钟执行)
, 匹配多个不连续值 30 17 * * 1,3,5(每周一、三、五 17:30)
/ 匹配间隔频率 */2 * * * *(每 2 分钟执行)
- 匹配连续值范围(文档未直接举例,补充通用场景) 0 8-18 * * *(8~18 点每小时执行)

四、重定向符号

>>:重定向追加

使用 >> 符号时,系统不会清空目标文件原有内容,而是将当前命令的输出直接添加到文件末尾。若目标文件不存在,则自动创建该文件。

实例:

#每隔一分钟往/opt/写入‘hello’,需用 >> 避免覆盖此前记录
echo "hello" >> /opt/hello.txt

>:重定向覆写

使用 > 符号时,系统会先清空目标文件的所有原有内容,再将当前命令的输出写入该文件。若目标文件不存在,则自动创建该文件。

更多推荐