在 Linux 系统中,有多个命令可以查看进程占用的物理内存大小。以下是几种常用的方法:
1. ps 命令
bash
# 查看指定进程的内存使用
ps -o pid,ppid,cmd,%mem,rss -p <PID>
# 按内存使用排序查看所有进程
ps aux --sort=-%mem | head
# 查看特定进程的详细信息
ps -p <PID> -o pid,ppid,cmd,%mem,rss,vsz,size
参数说明:
-
%mem:内存使用百分比 -
rss:物理内存使用量(KB) -
vsz:虚拟内存使用量(KB) -
size:进程占用的内存大小
2. top 命令
bash
# 交互式查看进程内存使用
top -p <PID>
# 批处理模式查看
top -b -n 1 -p <PID>
在 top 界面中:
-
RES:物理内存使用量 -
%MEM:内存使用百分比 -
VIRT:虚拟内存使用量
3. pmap 命令
bash
# 查看进程详细的内存映射
pmap -x <PID>
# 查看进程内存摘要
pmap <PID> | tail -1
4. /proc 文件系统
bash
# 查看进程状态信息
cat /proc/<PID>/status
# 查看进程内存统计
cat /proc/<PID>/statm
# 查看详细内存信息
cat /proc/<PID>/smaps
/proc/<PID>/statm 输出说明:
-
第一个数字:总程序大小
-
第二个数字:物理内存使用量(页数)
-
第三个数字:共享页面数
5. 使用脚本查看
bash
#!/bin/bash
PID=$1
if [ -f /proc/$PID/status ]; then
echo "进程 $PID 内存使用情况:"
grep -E "VmRSS|VmSize|VmData|VmStk|VmExe" /proc/$PID/status
else
echo "进程 $PID 不存在"
fi
6. htop 命令(需要安装)
bash
htop -p <PID>
实际应用示例
bash
# 查找并监控 nginx 进程的内存使用
pgrep nginx | xargs ps -o pid,cmd,%mem,rss --no-headers
# 持续监控某个进程的内存变化
watch -n 1 "ps -p <PID> -o pid,%mem,rss --no-headers"
内存单位说明
-
RSS(Resident Set Size):进程占用的物理内存大小
-
默认单位通常是 KB
-
1 MB = 1024 KB
-
1 GB = 1024 MB
最常用的方法是使用 ps aux 或直接查看 /proc/<PID>/status 文件,这些方法都能准确反映进程的实际物理内存使用情况。