Linux Swap满了怎么清理
导读:1. 查看Swap及内存使用情况 首先确认Swap空间的使用状态和内存占用情况,明确清理方向。常用命令: free -h:直观显示内存、Swap的总大小、已用空间及剩余空间; swapon --show:列出所有启用的Swap分区/文件及...
1. 查看Swap及内存使用情况
首先确认Swap空间的使用状态和内存占用情况,明确清理方向。常用命令:
free -h
:直观显示内存、Swap的总大小、已用空间及剩余空间;swapon --show
:列出所有启用的Swap分区/文件及其大小、优先级;top
(按f
键添加SWAP
列)或ps aux --sort=-%mem | head
:找出占用Swap最多的进程。
2. 临时释放Swap空间(快速缓解压力)
若需立即释放Swap,可通过“关闭-重新启用”Swap的方式,将Swap中的数据换回内存(需确保物理内存充足,否则可能导致OOM)。具体步骤:
- 关闭所有Swap:
sudo swapoff -a
(此命令会终止所有使用Swap的进程,建议在业务低峰期操作); - 重新启用Swap:
sudo swapon -a
(恢复Swap启用状态); - 验证效果:
free -h
查看Swap使用量是否归零。
3. 调整Swappiness参数(减少Swap使用倾向)
vm.swappiness
参数控制内核使用Swap的积极性(默认值60,范围0-100)。降低该值可让系统更倾向于使用物理内存,减少Swap占用。操作方法:
- 临时调整(立即生效):
sudo sysctl vm.swappiness=10
(例如设置为10,表示内存使用率达90%时才启用Swap); - 永久生效:将
vm.swappiness=10
添加到/etc/sysctl.conf
文件末尾,执行sudo sysctl -p
使配置生效。
4. 清理内存缓存(释放物理内存,间接减少Swap使用)
Linux系统会利用空闲内存作为缓存(如页面缓存、dentries/inodes缓存),可通过清理缓存释放物理内存,降低Swap使用概率。命令:
sudo sh -c 'sync;
echo 3 >
/proc/sys/vm/drop_caches'
sync
:将缓存数据同步到磁盘,避免数据丢失;echo 3
:清理页面缓存、目录项缓存和inode缓存(echo 1
仅清理inode,echo 2
仅清理页面缓存)。
5. 终止占用Swap的高内存进程(解决根源问题)
若某进程长期占用大量Swap,需定位并终止该进程(谨慎操作,避免影响核心服务)。步骤:
- 找出占用Swap最多的进程:
该命令会列出Swap使用量前5的进程(显示进程名和Swap用量);for file in /proc/*/status; do awk '/VmSwap|Name/{ printf $2 " " $3} END{ print ""} ' $file; done | sort -k 2 -n -r | head -n 5
- 终止进程:根据进程名或PID,执行
sudo kill -9 < PID>
(-9
表示强制终止)。
6. 扩展Swap空间(长期解决方案)
若物理内存不足且频繁出现Swap满的情况,需扩展Swap空间(优先选择Swap文件,操作更灵活)。常见方法:
- 创建Swap文件(以2GB为例):
sudo fallocate -l 2G /swapfile # 创建2GB空文件 sudo chmod 600 /swapfile # 设置仅root可读写 sudo mkswap /swapfile # 格式化为Swap格式 sudo swapon /swapfile # 启用Swap文件
- 永久生效:将
/swapfile none swap sw 0 0
添加到/etc/fstab
文件中(重启后自动启用); - 扩展Swap分区(适用于LVM或物理分区):
若使用LVM,可通过lvextend
扩展逻辑卷,再用mkswap
重新格式化;若为物理分区,需使用fdisk
/parted
调整分区大小,操作较复杂。
注意事项
- 操作前务必备份重要数据,尤其是修改
/etc/fstab
或调整分区时; - 释放Swap前需确保物理内存充足(可通过
free -h
查看available
内存),否则可能导致系统崩溃; - 若Swap频繁满,建议升级物理内存(从根本上解决问题)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux Swap满了怎么清理
本文地址: https://pptw.com/jishu/732803.html