云计算基础——Linux9
一、缓存与缓冲的区别

| 类型 | 核心用途 | 作用 |
|---|---|---|
| 缓冲区 | 核心是 “辅助写入 / 传输” | 通过暂存数据实现 “批量处理”,缓解不同设备(如 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 <任务编号>:可以将后台任务重新恢复到前台运行
除非后台中的任务只有一个,否则 bg 和fg 命令都需要指定后台进程的任务编号作。
2.7 终止进程执行
2.7.1 前台进程中断
当用户在前台执行某个进程时,可以按Ctrl+C组合键强制进行中断(如命令长时间没有响应的情况下)。
中断前台进程的运行后,系统将返回命令行提示符状态等待用户输入新的命令。
当按Ctrl+C组合键无法终止程序或者需要结束在其他终端或后台运行的进程时,可以使用专用的进程终止工具kill、killall和pkill。
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
>:重定向覆写
使用 > 符号时,系统会先清空目标文件的所有原有内容,再将当前命令的输出写入该文件。若目标文件不存在,则自动创建该文件。
更多推荐
所有评论(0)