buff/cache 内存占用过多(定时任务、脚本)

找一个目录,然后创建脚本文件 touch cleanCache.sh,用 vi 编辑 vi cleanCache.sh,添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
used=`free -m | awk 'NR==2' | awk '{print $3}'`
free=`free -m | awk 'NR==2' | awk '{print $4}'`

echo "==========================="
echo "内存使用情况 | [使用了:${used}MB][剩余:${free}MB]"

if [ $free -le 500 ] ; then
sync && echo 1 > /proc/sys/vm/drop_caches
sync && echo 2 > /proc/sys/vm/drop_caches
sync && echo 3 > /proc/sys/vm/drop_caches
echo "清理Cached成功"
else
echo "不需要清理"
fi
exit

通过如下命令测试脚本是否正常运行:

1
2
chmod 777 cleanCache.sh
./cleanCache.sh

下面开始设置自动定期清理,输入如下命令,打开配置文件 crontab -e,在末尾添加如下内容(每天 0 点的时候执行一次,可以按需更改):

1
* 0 * * * ./路径/cleanCache.sh

然后输入如下指令可以查看是否成功:

1
crontab -l

阿里云服务器启用虚拟内存

阿里云服务器默认没有开启虚拟内存,经常遇到软件内存不足,运行崩溃的情况。

1. 创建虚拟内存磁盘卷

1
2
3
# 大概 count=2024288,2G 左右,可以视磁盘大小和需求创建
# 默认存放在 /swap/swapadd,可以是自己的任何目录。阿里云服务器默认没有 swap,需要自己 mkdir /swap 创建
dd if=/dev/zero of=/swap/swapadd bs=1024 count=2024288

2. 将磁盘卷转为虚拟内存卷

1
mkswap /swap/swapadd

3. 启用虚拟内存服务

1
2
swapon /swap/swapadd
free -h

4. 关闭虚拟内存服务

1
swapoff -v /swap/swapadd

5. 移动虚拟内存空间

如果当前的虚存所在的磁盘空间不够,可以首先关闭虚存服务,将其移动到别的磁盘,再启用即可:

1
2
3
swapoff -v /swap/swapadd
mv /swap/swapadd /mnt/swap
swapon /swap/swapadd

磁盘清理

查看所有的 jobs 的磁盘占用情况

max-depth 参数表示目录查找深度:

1
du -ah --max-depth=1

查看磁盘空间使用情况

1
df -h

查看是哪个文件占用空间比较大

1
du --max-depth=1 -h /

清空日志文件

清空日志文件(而非删除,避免一些系统级别的错误导致不产生日志):

1
cat /dev/null > file.log

查找大于 100M 的文件

1
ls -lh $(find ./ -type f -size +100M)

记录一次错误:Insufficient space for shared memory file

解决:临时文件目录(/tmp)下的空间不够了。