Linux查看 CPU占用率、内存占用、磁盘使用情况
查看操作系统
cat /etc/os-release

检查输出中的关键字段
NAME="CentOS Linux"
ID="centos"
查看CPU
CPU占用 top
图中红色部分即为占用百分率,下面是每个进程的CPU占用率,如果服务器是多核CPU可能在下方看到有些进程CPU占用超过100%,这种一般是该进程使用了多核。
直接在命令行输入top即可查看CPU占用,效果演示如下:
top

其中:
- %us:表示用户空间程序的cpu使用率(没有通过nice调度)
- %sy:表示系统空间的cpu使用率,主要是内核程序。
- %ni:表示用户空间且通过nice调度过的程序的cpu使用率。
- %id:空闲cpu(空闲率 58.3%,cpu充足)
- %wa:cpu运行时在等待io的时间
- %hi:cpu处理硬中断的数量
- %si:cpu处理软中断的数量
- %st:被虚拟机偷走的cpu
- PID - 进程标示号
- USER - 进程所有者
- PR - 进程优先级
- NI - 进程优先级别数值
- VIRT - 进程占用的虚拟内存值
- RES - 进程占用的物理内存值
- SHR - 进程使用的共享内存值
- S - 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死
- %CPU - 进程占用的CPU使用率
- %MEM - 进程占用的物理内存百分比
- TIME+ - 进程启动后占用的总的CPU时间
- Command - 进程启动的启动命令名称
查看CPU 架构
uname -m

查看CPU核数
lscpu

-
CPU(s): 16
表示系统总逻辑线程数为 16(即操作系统可见的“虚拟CPU”数量)。 -
Thread(s) per core: 1
每个物理核心仅对应 1 个线程,说明 未启用超线程技术(若为2,则启用超线程)。 -
Core(s) per socket: 2
每个物理 CPU(插槽)包含 2 个物理核心。 -
Socket(s): 8
系统共有 8 个物理 CPU 插槽。
核数计算公式
-
总物理核数 = 每个插槽的核数 × 插槽数
2 cores/socket × 8 sockets = 16 -
总逻辑线程数 = 物理核数 × 每核线程数
16 cores × 1 thread/core = 16
(与CPU(s): 16一致,验证计算正确)
查看内存占用 free
free的使用
free -h
直接在命令行输入free即可查看CPU占用,效果演示如下:

可以查看到内存的使用、空闲、缓存空间、交换空间的使用情况等
free的其他参数使用
可以看到上面展示的效果并不适合人类来阅读,因为你看到这个数字是没有直观的反馈的。好吧,作为最人性化设计的linux总会给你留一手的,下面我们看看其他参数:
- -b, --bytes :字节为单位显示
- -k, --kilo:以kb为单位显示
- -m, --mega:以M为单位显示
- -g, --giga:以G为单位显示
- -h, --human:自动匹配人类可读并且合适的单位显示
推荐选用这个参数

我来逐项解释:
total (30Gi)
系统物理内存总量,由硬件决定,计算公式:
total = 物理内存芯片容量总和used (3.7Gi)
已分配内存总量,计算公式:
used = total - free - buff/cache
本例验证:30Gi - 11Gi - 14Gi = 5Gi(与3.7Gi存在差值,详见说明)
说明:部分系统会将shared内存计入 used,导致计算偏差free (11Gi)
完全未被使用的物理内存,直接来自内核统计shared (2.3Gi)
进程共享内存量buff/cache (14Gi)
内核缓存和缓冲区总和available (23Gi)
实际可用内存量,核心计算公式:
available = free + 可回收的buff/cache部分
本例中:11Gi free + 约12Gi可回收缓存 = 23GiSwap (全0B)
未启用交换空间,所有值均为0
查看磁盘使用情况 df
df -Th --total
df(disk free)命令用来查看系统磁盘空间使用情况
参数:
- -h:(可读性)显示单位,换算单位1024字节
- -H:(可读性)显示单位,换算单位1000字节
- -k:以KB为单位,显示磁盘大小
- -m:以MB为单位,显示磁盘大小
- --total:汇总
- -i:列出inode信息而非块使用量
- -T:显示文件系统类型
- -t:查看指定文件类型的磁盘使用情况,如 df -t tmpfs
- -x:查看处指定文件类型外的磁盘使用情况,即 -t 的反选。
- -a:显示所有文件系统
一、字段解释
不加参数默认显示所有磁盘占用情况,不显示单位。

字段从左到右依次是:
- Filesystem:磁盘使用的文件系统
- 1K-blocks:磁盘的总内存,以1K为单位(1K=1024字节)
- Used:已使用的内存
- Available:可用内存
- Use%:磁盘使用百分比
- Mounted on:磁盘文件系统的挂载点
二、显示单位
df -h 以容易阅读的格式显示大小单位,自动转换为 G(千兆字节)、M(兆字节)、K(千字节)。
也是工作中,最常用的一种方式。

也可以显示详细信息,加个T参数

df -H 和 df -h 很像,不同的是,-h 每1024字节转化为1KB,-H 每1000字节转化为1KB。

df -k 以K为单位显示文件大小,但不显示单位,也就是默认的显示格式。注:1K=1-24字节

df -m 以M为单位显示文件大小,但不显示单位。注:1M=1024K=1048576字节

三、汇总显示
df --total 可以汇总磁盘的使用情况,在最下方插入一行,显示每一列的总和。

四、指定目录
查看指定目录的挂载点和所在磁盘的使用情况。
比如:df -h /root 查看/root 目录挂载到哪个磁盘,及磁盘的使用情况。

五、指定显示字段
自定义结果输出的字段,字段名之间使用逗号分隔。
例:只显示文件系统、使用百分比、挂载点这三个字段 df --output=source,pcent,target

可选择的字段有:‘source’, ‘fstype’, ‘itotal’, ‘iused’, ‘iavail’, ‘ipcent’, ‘size’, ‘used’, ‘avail’, ‘pcent’, ‘file’ and ‘target’
六、du和df结果不一样
du 和 df 命令都可以查看磁盘使用情况,但有些时候两者的查询结果会不一样,比如:
df -h 显示/boot磁盘使用了145M

进入/boot目录后,du -sh显示只用了113M

du 基于文件获取数据,可以跨分区;
df 基于分区的块信息获取数据,只能针对整个分区;
当用户删除文件后,du将无法获取这些文件的数据,这个时候,如果还有进程持有被删除文件的句柄,文件就不会被真正的删除,分区的块信息就还保存文件信息,df 统计的时候也会算上这个文件的磁盘占用空间。
lsof 可以查看这种被删除状态的文件,也就是 deleted 状态。
进入/boot目录,lsof | grep deleted 查看 deleted 状态的文件。

kill PID 结束进程或重启对应的服务。
重启服务器也会结束进程,释放掉被删除文件的句柄。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)