centos7 清理缓存

一、系统环境

  • 系统版本
    CentOS Linux release 7.3.1611 (Core)
  • 内核版本
    Linux xx-user 3.10.0-514.el7.x86_64 #1 SMP
  • 背景
    服务器分配的账号是普通用户,只能执行sudo命令

二、缓存查看及基本概念

  1. 查看内存使用情况
[user01@xx-user ~]$ free -h
              total        used        free      shared  buff/cache   available
Mem:            31G        4.2G         202M        1.6G        24G         25G
Swap:           15G        756K         15G
  1. 基本概念
    Mem与Swap区分
    Mem 内存的使用信息
    Swap 交换空间的使用信息
    Mem内各字段的区分
    total 系统总的可用物理内存大小
    used 已被使用的物理内存大小
    free 还有多少物理内存可用
    shared 被共享使用的物理内存大小
    buff/cache 被 buffer 和 cache 使用的物理内存大小
    available 还可以被 应用程序 使用的物理内存大小
    free 与 available 的区别
    free 是真正尚未被使用的物理内存数量。
    available 是应用程序认为可用内存数量,available = free + buffer + cache (注:只是大概的计算方法)

    Linux 为了提升读写性能,会消耗一部分内存资源缓存磁盘数据,对于内核来说,buffer 和 cache 其实都属于已经被使用的内存。但当应用程序申请内存时,如果 free 内存不够,内核就会回收 buffer 和 cache 的内存来满足应用程序的请求。这就是稍后要说明的 buffer 和 cache。

三、清理缓存命令

# 运行sync将dirty的内容写回硬盘
[user01@xx-user ~]$ sync

# To free pagecache:
# 表示清除 pagecache
[user01@xx-user ~]$ echo 1 > /proc/sys/vm/drop_caches

# To free dentries and inodes:
# 表示清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache
[user01@xx-user ~]$ echo 2 > /proc/sys/vm/drop_caches

# To free pagecache, dentries and inodes:
# 表示清除pagecache和slab分配器中的缓存对象
[user01@xx-user ~]$ echo 3 > /proc/sys/vm/drop_caches

四、报错与解决

  1. 报错
    运行命令清缓存时,报错:

    [user01@xx-user ~]$ echo 1 > /proc/sys/vm/drop_caches
    -bash: /proc/sys/vm/drop_caches: Permission denied
    
  2. 原因
    bash 拒绝这么做,提示权限不够,是因为重定向符号 “>” 也是 bash 的命令。sudo 只是让 echo 命令具有了 root 权限,
    但是没有让 “>” 命令也具有root 权限,所以 bash 会认为这个命令没有写入信息的权限。

  3. 解决
    “sh -c” 命令,它可以让 bash 将一个字串作为完整的命令来执行

    sudo sh -c "echo 1 > /proc/sys/vm/drop_caches"
    
    sudo sh -c "echo 2 > /proc/sys/vm/drop_caches"
    
    sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
    
    # 或者
    echo 1 |sudo tee /proc/sys/vm/drop_caches
    

五、清理结果

  1. 清理前

    [user01@xx-user ~]$ free -h
                  total        used        free      shared  buff/cache   available
    Mem:            31G        4.2G         202M        1.6G        24G         25G
    Swap:           15G        756K         15G
    
  2. 清理后

    [user01@xx-user ~]$ free -h
                  total        used        free      shared  buff/cache   available
    Mem:            31G        4.2G         24G        1.6G        2.1G         25G
    Swap:           15G        756K         15G
    

【解决方法参考自】:https://blog.csdn.net/don_chiang709/article/details/91489003

猜你喜欢

转载自blog.csdn.net/weixin_41474364/article/details/118722219