Linux 中清理 Swap 的安全步骤
一、先判断是否可以安全释放
二、快速释放 Swap 的推荐做法
三、无法一次性回收时的定位与处理
for pid in $(ls /proc | grep '^[0-9]'); do
if [ -f /proc/$pid/status ]; then
swap=$(grep VmSwap /proc/$pid/status 2>/dev/null | awk '{print $2}')
if [ -n "$swap" ] && [ "$swap" -gt 0 ]; then
cmd=$(cat /proc/$pid/cmdline 2>/dev/null | tr '\0' ' ')
echo "PID: $pid, Swap: ${swap} kB, CMD: $cmd"
fi
fi
done | sort -k5 -nr
for i in $(cd /proc; ls | grep -E '^[0-9]+'); do
awk '/Swap:/{a+=$2} END{printf "%s %.2fM\n", '"$i"', a/1024}' /proc/$i/smaps 2>/dev/null
done | sort -k2 -nr | head
四、释放页缓存以间接帮助回收 Swap(可选)
五、中长期优化与扩容
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab