linux docker 内如何查看每个进程内存的占用量
在 Docker 容器内,你可以使用 Linux 的工具来查看每个进程内存的占用量。以下是几种常用的方法:
方法1: 使用 ps 命令
ps 命令可以显示当前运行的进程,并且支持查看每个进程的内存使用情况。
ps aux --sort=-%mem
其中:
aux: 显示所有进程的详细信息;--sort=-%mem: 按内存使用率降序排列。
在输出中,有一列 %MEM 表示进程占用的**百分比内存**,另一列 RSS 表示**实际使用的物理内存**(以 KB 为单位)。
方法2: 使用 top 命令
top 是实时监控系统资源使用情况的工具,包含每个进程的内存和 CPU 使用情况。
top
在输出中:
RES: 表示当前进程实际占用的物理内存(Resident Memory);%MEM: 表示进程的内存使用比例。
如果你只想聚焦内存,可以按 Shift + f 调出列选择,选择 %MEM 或 RES 排序。
方法3: 使用 htop 工具 (可选)
htop 是更好用的交互式工具,比 top 更人性化。你可以在 Docker 容器内安装它:
apt-get update && apt-get install -y htop htop
然后你可以按 F6 键选择内存列,按内存占用量排序。
方法4: 直接从 /proc 文件系统查看
每个进程都有对应的 /proc/<pid> 目录,里面包含资源使用信息。例如:
cat /proc/<pid>/status | grep -i memory
或者:
cat /proc/<pid>/smaps
你可以通过脚本遍历 /proc 下的所有 PID 来统计内存使用:
for pid in $(ls /proc | grep -E '^[0-9]+$'); do
echo -n "PID: $pid "
grep VmRSS /proc/$pid/status 2>/dev/null
done
VmRSS 即为进程实际占用的**物理内存**。
注意事项
由于 Docker 容器是在 cgroup 限制范围内运行,进程的内存占用可能会受到 cgroup 限制的影响。因此,你也可以检查 cgroup 的内存限制文件:
cat /sys/fs/cgroup/memory/memory.limit_in_bytes

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接