要查看 哪个进程占用了 swap,可以根据系统环境(Linux 为主)选择下面几种常用方法。
smem 查看每个进程的 swap 占用smem -s swap -r -p
或更详细:
smem -t -k
示例输出中:
如果没有
smem:
yum install smem # CentOS/RHEL
apt install smem # Debian/Ubuntu
top 查看(简单快速)top
进入后:
SWAP,按 空格 选中你可以看到每个进程的 swap 使用量。
htop(更直观)htop
操作:
安装:
yum install htop
apt install htop
/proc 精确查看(适合脚本)for pid in $(ls /proc | grep '^[0-9]'); do
awk '/VmSwap/ {print $2}' /proc/$pid/status 2>/dev/null
done | awk '{s+=$1} END {print s " kB"}'
for pid in $(ls /proc | grep '^[0-9]'); do
swap=$(awk '/VmSwap/ {print $2}' /proc/$pid/status 2>/dev/null)
[ "$swap" ] && echo "PID: $pid Swap: ${swap} kB"
done | sort -k3 -n
free -h
swapon -s
cat /proc/sys/vm/swappiness
sysctl vm.swappiness=10
| 场景 | 推荐命令 |
|---|---|
| 快速查看 | top / htop |
| 精确分析 | smem |
| 脚本/自动化 | /proc/[pid]/status |
如果你愿意,可以把 free -h 或 top 的输出贴出来,我可以帮你判断 是否需要优化或释放 swap。