8.linux进程管理与资源监控
Linux 进程管理与资源监控
1. 基本概念:进程与作业 (Processes and Jobs)
在计算中,我们经常遇到与“进程”和“作业”相关的几个核心概念。下图总结了这些关键术语,它们是理解操作系统如何管理程序执行的基础:
- 应用程序 (Application) = 服务 (Service): 应用程序可以作为服务在后台运行。
- 脚本 (Script): 由解释器执行的一系列命令。
- 进程 (Process): 正在执行的程序的实例。
- 守护进程 (Daemon): 在后台运行以执行特定任务的特殊进程。
- 线程 (Threads): 进程内的执行单元。
- 作业 (Job): 由shell管理的一组进程。
2. 监控和管理进程
当操作系统启动时,许多程序会加载到系统内存中。这些进程或程序需要被管理和监控,因为它们主要消耗三种系统资源:CPU、内存和磁盘空间。
以下是一些常用的管理系统资源的监控命令。
3. 系统资源监控命令
3.1. 磁盘空间 (df, du)
df (disk free)
显示文件系统的磁盘空间使用情况。

建议你使用-h选项,获得更方便阅读的结果。

此外-T选项也很重要。这个结果向你展示了文件系统的类型(Type)。
xfs:- 这是一种高性能的日志文件系统 (Journaling File System)。
- “日志”意味着它会记录即将对磁盘进行的更改,如果系统意外崩溃(比如断电),它能很快恢复数据一致性,而不需要长时间扫描整个磁盘。
xfs这种类型的文件系统是持久化的,意味着它存储在你的物理硬盘上,关机后数据不会丢失。- 在你的例子中,你的根目录 (
/) 和 启动目录 (/boot) 都使用了xfs。
tmpfs(Temporary File System):- 这是一种临时的、基于内存的文件系统。
- 它把所有数据都存储在RAM(内存) 和/或交换空间 (swap) 中。
- 优点:读写速度极快,因为它操作的是内存。
- 缺点:它是易失的(Volatile),意味着系统一旦重启,
tmpfs上的所有数据都会丢失。 - 它非常适合存放那些“用完即走”的临时运行时数据。
devtmpfs:- 这是一种特殊的
tmpfs,专门用于/dev目录。 - 它的任务是由内核在系统启动时动态创建和管理设备文件(比如你的硬盘
/dev/sda、终端/dev/tty1等)。
- 这是一种特殊的
du (disk usage)
估算文件和目录的磁盘使用空间。

这个命令du -k / | sort -nr | more是从根目录 (/) 开始计算所有目录的磁盘占用空间(以KB为单位),然后将结果按空间大小从大到小排序,最后把这个排好序的列表用分页器(more)显示出来,方便查看。
提示: 上面的这些
cannot access的提示都是正常现象。它们只是告诉你在du扫描整个系统的过程中,有几个瞬时的/proc文件消失了,并且有几个属于其他用户的 FUSE 挂载点拒绝了你的访问。你可以忽略这些。
同样du命令也有-h选项。

你可以通过这个命令查看什么文件占据了很大的空间,从而对其进行管理。
3.2. 系统负载与内存 (uptime, top, free)
uptime
显示系统已经运行了多长时间,当前登录的用户数,以及系统在过去1、5、15分钟内的平均负载。

top
实时显示系统中各个进程的资源占用状况,类似于 Windows 的任务管理器。

top 命令输出的主要字段解释:
- PID: 进程ID。
- USER: 进程的所有者。
- PR: 进程优先级。
- NI: 进程的 nice 值。
- VIRT: 进程使用的虚拟内存量。
- RES: 进程使用的常驻内存量。
- SHR: 进程使用的共享内存量。
- S: 进程状态。
- %CPU: 自上次更新以来进程所使用的 CPU 时间百分比。
- %MEM: 进程所使用的物理内存百分比。
- TIME+: 任务所使用的总 CPU 时间,单位为 1/100 秒。
- COMMAND: 命令名称或命令行。
free
显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区。

如果你想以MB为单位,只需要加上-m选项。
3.3. 网络与文件 (lsof, tcpdump, netstat)
lsof (list open files)
列出当前系统打开的文件。有些时候,当你停止了某个进程,它所正在查找的文件仍然处于被打开的状态。
tcpdump
一个强大的网络抓包工具,用于捕获和分析网络流量。
我们来简单使用一下,首先我们使用ifconfig(这是个很老的命令了,不过很多人包括我习惯于用这个,新的ubuntu等都没有预装这个老命令的包了),或者ip addr show,来检查IP地址和网卡:

比如我想查看流经这个enp0s3接口的所有流量信息:

netstat
显示网络连接、路由表、接口统计等网络相关信息。
注意:
netstat是一个比较旧的命令,现在你可以使用ip -r来获取类似的信息。

4. 进程管理 (ps, kill)
ps (process status)
显示当前系统的进程状态。

kill
用于向进程发送信号,通常用于终止进程。


可以看到这个top进程被杀掉了。你可以使用-9选项来强制终止进程。
5. 高级监控工具 (vmstat, iostat, iftop)
vmstat (virtual memory statistics)
报告关于虚拟内存、进程、CPU活动、I/O等的统计信息。
iostat (input/output statistics)
报告CPU统计信息和输入/输出设备的统计信息。

iftop (interface top)
实时监控网络接口的流量。
在 RHEL 10 上安装 iftop
第一步:启用 codeready-builder (CRB) 仓库
EPEL 里的软件包经常需要这个仓库里的依赖。
1 | sudo subscription-manager repos --enable codeready-builder-for-rhel-10-$(arch)-rpms |
第二步:手动安装 EPEL 10 的 ‘release’ 包
这会告诉 dnf 工具 EPEL 仓库的地址。
1 | sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm |

在安装过程中,它可能会提示导入 EPEL 的 GPG 密钥,请输入 y 并按回车键接受。
第三步:安装 iftop
现在 dnf 已经知道 EPEL 仓库了,您可以直接安装 iftop。
1 | sudo dnf install iftop |

安装完成后,你就可以使用 iftop 命令了。
