linux 内存信息

free

  • free -b:以bytes为单位来显示内存的信息。

  • free -k:以kb为单位来显示内存的信息。

  • free -m:以m为单位来显示内存的信息。

  • free -g:以G为单位来显示内存的信息。

  • free -h:以适于人类可读方式显示内存信息。-h与其他命令最大不同是**-h**选项会在数字后面加上适于人类可读的单位

  • total: 表示总计物理内存的大小

  • used: 表示已使用多少

  • free: 表示可用内存多少

  • shared: 表示多个进程共享的内存总额

  • buffers/cache:磁盘缓存的大小。

  • available:真正剩余的可被程序应用的内存数

缓存过大

问题

linux中有着自己的内存机制,cached会缓存一些文件系统,排查代码发现系统经常使用rsync同步文件,每次同步的文件不同导致cached越来越大,

解决

可以修改/proc/sys/vm/drop_caches 文件来清除缓存
默认是0,1表示清空页缓存,2表示清空inode和目录树缓存,3清空所有的缓存
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
根据需要清除缓存,设置后系统不允许重新设为0了,不过重启系统后默认又是为0

定时清理脚本

cleanCache.sh

#!/bin/bash
#每天0点清除一次缓存
echo "开始清理缓存"
sync;sync;sync #写入硬盘,防止数据丢失
sleep 10 #延迟10秒
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
echo "清理结束"
crontab -e
在末尾添加如下内容:(每天0点的时候执行一次,可以按需更改)
* 0 * * * ./路径/cleanCache.sh

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×