linux系统无法释放缓存

  1. 现象
    在一个16G的内存系统的linux系统中,使用多命令无法使用释放缓存
  2. 尝试许多办法
    1. echo 1 > /proc/sys/vm/drop_caches && echo 2 > /proc/sys/vm/drop_caches && echo 3 > /proc/sys/vm/drop_caches
    2. 尝试把上个命令卸载crontab里面 ,每小时执行一次

但依然有12个G的内存未释放,请问如何判断释放出缓存。或者如何判断哪个进程占用极大内存

img

  • 这篇博客: linux如何查看某环境变量在哪个文件中配置以及crontab不执行问题中的   部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 环境变量设置一般是系统用户环境变量和用户环境变量,相关配置文件如下:

    /etc/profile全局用户,应用于所有的Shell。/$HOME/.profile当前用户,应用于所有的Shell。/etc/bash_bashrc全局用户,应用于Bash Shell。~/.bashrc局部当前,应用于Bash Sell

    如果只是程序软件的临时环境变量设置,那么就需要在软件所在目录执行如下语句

    find  .  -name "*.*" xargs grep "test"

    上述信息请用查找的变量信息来替换test

     

    linux启动后环境变量加载的顺序为:etc/profile → /etc/profile.d/*.sh → ~/.bash_profile → ~/.bashrc → [/etc/bashrc]

     

    本人写了一个shell脚本,里面有sqlplus,发现手动执行会有跑到sqlplus但是放到crontab里面不执行sqlplus,但是shell会跑。后面我在shell脚本上设置了环境变量,最终执行,因为crontab不一样,它本身没有环境给你运行,所以需要手动添加环境:

    source /etc/profile
    #source ~/.bash_profile
    . ~/.bash_profile

    其中主要要看下面的环境变量是在哪个文件中就加载引用哪个文件

    source  ~/.bash_profile和. ~/.bash_profile都可以用

    export PATH=/myweb/instantclient_12_2:$PATH

    export LD_LIBRARY_PATH=/myweb/instantclient_12_2:$LD_LIBRARY_PATH

    注意:是在#!bin/bash的上面,而不是下面,否则运行不了。另外这里只写一个也应该是可以的,可以自己试试。