在 Linux 服务器上清理内存有助于提高系统性能,避免内存不足的情况。以下是一些常用的清理内存的方法:
1. 清理缓存和缓冲区
Linux 系统会使用空闲内存来缓存文件和缓冲 I/O 操作,以提高性能。可以使用以下命令清理缓存和缓冲区:
# 清理页面缓存
sync; echo 1 > /proc/sys/vm/drop_caches
# 清理目录项和 inode 缓存
sync; echo 2 > /proc/sys/vm/drop_caches
# 清理页面缓存、目录项和 inode 缓存
sync; echo 3 > /proc/sys/vm/drop_caches
例如:
# 清理页面缓存、目录项和 inode 缓存
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
2. 使用 sync 命令
sync 命令将所有未写入磁盘的缓存数据写入磁盘,从而释放一些内存:
sync
3. 使用 free 命令查看内存使用情况
使用 free 命令查看当前的内存使用情况:
free -h
#输出示例:
total used free shared buff/cache available
Mem: 7.8G 2.1G 4.2G 153M 1.5G 5.2G
Swap: 2.0G 0B 2.0G
4. 结束不必要的进程
使用 top 或 htop 命令查看当前运行的进程,并结束不必要的进程以释放内存。
top
或
htop
#在 top 或 htop 中,可以按 k 键,然后输入进程 ID(PID)以终止进程。
5. 使用 ps 命令查看内存占用
使用 ps 命令查找内存占用高的进程:
ps aux --sort=-%mem | head
6. 减少开机启动项
检查和减少开机启动项,可以减少系统启动时的内存占用。使用 systemctl 命令禁用不必要的服务:
systemctl disable 服务名
例如:
systemctl disable apache2
7. 调整交换分区 (Swap)
如果系统内存不足,可以调整交换分区的大小或创建交换文件:
创建交换文件:
# 创建一个1G的交换文件
sudo fallocate -l 1G /swapfile
# 设置交换文件权限
sudo chmod 600 /swapfile
# 将文件格式化为交换分区
sudo mkswap /swapfile
# 启用交换文件
sudo swapon /swapfile
# 将交换文件信息添加到 /etc/fstab,以便重启后自动启用
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
调整交换分区的使用优先级:
通过调整 vm.swappiness 参数,可以控制系统内存和交换分区的使用策略。值范围为 0 到 100,较高的值表示更倾向于使用交换分区。
# 临时调整
sudo sysctl vm.swappiness=10
# 永久调整
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
8. 卸载不必要的软件包
清理和卸载不必要的软件包和依赖项,以减少内存占用:
sudo apt-get autoremove
sudo apt-get clean