• 挨个查看文件夹大小,没有发现问题,然后就用Ctrl + H显示隐藏文件夹后再继续逐个查看大小,发现.cache隐藏文件夹超大,有170多G,如图:从网上搜索到可以通过以下命令删除缓存:非常有用的清理命令:sudo apt-get ...
    在使用中突然发现系统超慢,没有做什么特别的操作。

    只好重启下电脑,重启后提示系统空间不足1G。挨个查看文件夹大小,没有发现问题,然后就用Ctrl + H显示隐藏文件夹后再继续逐个查看大小,发现.cache隐藏文件夹超大,有170多G,如图:


    从网上搜索到可以通过以下命令删除缓存:
    非常有用的清理命令:
    sudo apt-get autoclean 清理旧版本的软件缓存
    sudo apt-get clean 清理所有软件缓存
    sudo apt-get autoremove 删除系统不再使用的孤立软件
    这三个命令主要清理升级缓存以及无用包的。

    就试了试sudo apt-get autoclean命令,执行结果瞬间完成:
    gym@gym:~$ sudo apt-get autoclean
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树
    正在读取状态信息... 完成
    gym@gym:~$
    赶紧不太相信会清理掉170G的文件,抱着试试看的心态,又查看了一下.cache文件夹的大小,结果震惊了,OMG,真的瞬间清理了170G的空间大小:
    有图有真相,清理后不足1G了,真是太神奇了:


    展开全文
  • linux 动态装载动态库 ldd,ldconfig,ld.so.conf, ld.so.cache  (2012-04-12 10:05:08) 转载▼ 标签:  杂谈 分类: linux范畴 前面我们介绍过,GCC编译C++程序的那些步骤,其中包括编译的...

    linux 动态装载动态库 ldd,ldconfig,ld.so.conf, ld.so.cache

     (2012-04-12 10:05:08)
    标签: 

    杂谈

    分类: linux范畴

    前面我们介绍过,GCC编译C++程序的那些步骤,其中包括编译的时候include的搜索目录,链接的时候库的搜索目录(这里的库包含两种库)。还有一个时候,需要搜索路径,那就是装载动态库的时候,这个时候与GCC无关了。而是与linux系统自身有关系。

     

    动态转载动态库,是为基于动态库编译链接而来的可执行程序设定的一个程序执行过程中需要的功能,对于那些只基于静态库的可执行程序来说,这个功能没有什么用。

     

    1)执行这个动作的linux程序:  ld.so

    2)这个程序参考的文件为:/etc/ld.so.conf,该文件保存着ld应该搜索的so文件路径。通常ld.so.conf.d这个文件夹下也保存着分文件,以供合成ld.so.conf

    3)该程序实际参考的文件为:/etc/ld.so.cache.这个文件会其实基本上就是对/etc/ld.so.cache 做了稍微的处理利于/usr/bin/ld程序的参考。

    4)将/etc/ld.so.conf 更新到/etc/ld.so.cache.的命令: ldconfig. 使用 ldconfig -p|less可以逐步查看从/usr/bin/ld 眼里的/etc/ld.so.cache的内容(路径)。

    5)所以往/etc/ld.so.conf内做指定的路径,如/usr/lib等加入你需要程序搜索的动态库.so文件,不需要执行ldconfig更新。因为/etc/ld.so.cache中保存的就是目录,而不是具体的so文件。

    6)向/etc/ld.so.conf添加路径。则需要调用ldconfig来更新/usr/bin/ld的搜索路径。


       
    ld可以叫静态连接器,ld.so可以叫动态连接器

     

     

    运行时动态库的搜索路径:

    动态库的搜索路径搜索的先后顺序是:

    编译目标代码时指定的动态库搜索路径(这是通过gcc 的参数"-Wl,-rpath,"指定。当指定多个动态库搜索路径时,路径之间用冒号""分隔)

    环境变量LD_LIBRARY_PATH指定的动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号""分隔)

    配置文件/etc/ld.so.conf中指定的动态库搜索路径;

    默认的动态库搜索路径/lib

    默认的动态库搜索路径/usr/lib

     

    也就是说,虽然linux以装载动态库时搜索的路径以/etc/ld.so.conf为主,但是,仍然有其它的方式,来构建这种装载路径的灵活性。仍然是遵守那种先“专”后“宽”的模式去缩短可能的搜索时间。

    第一个,就是在编译连接该程序的时候,就指定将来需要动态库的时候搜索的位置。注意这个与当时的链接路径虽然有很大的关系,但是他们的概念是不同的。

    第二个,也就是在使用/etc/ld.so.conf之前,还有一个路径设置方法就是环境变量LD_LIBRARY_PATH. 这个东西可以使用:

    # export LD_LIBRARY_PATH=”/usr/lib/old:/opt/lib 来创建修改这个变量。

    第三个,才是/etc/ld.so.conf

    最后。则是系统默认路径。



    (2) 静态链接库和动态链接库的使用区别
    首先,回顾一点,一个程序,从源代码到运行,包括:编译(compile)、链接(link)、加载(load)、运行(execute),对应的GNU工具一般为:编译器compiler(gcc)、链接器linker(ld)、加载器loader(其中动态链接库加载器为ld.so(ld-linux.version.so),在/lib目录中,如 /lib/ld-linux.so.2,所以不能直接在命令行下运行ld-linux.so,需要完整路径,加载器一般不需要我们直接运行,在运行可执行程序的加载过程中包含有动态加载的过程)。经常会将编译和链接统称为编译,期间为编译时(compile time);而加载和运行统称为运行,期间为运行时或执行时(runtime/execution time)。
    静态链接库:编译时(compile time)被使用(更详细的是链接的时候)。在链接静态库的时候,链接器会在其中找到所需要链接的函数,然后将它们拷贝到执行文件,这种拷贝是完整的拷贝,所以在链接成功后,程序运行不需要静态库的参与。
    动态链接库:编译时和运行时都被使用。在编译时,链接器在其中找到所需要的函数(或其他对象文件),生成地址/位置无关代码(Position Independent Code (PIC)),并没有真正的实现拷贝;在运行时(runtime/execution-time),某个程序在运行中要调用某个动态链接库函数的时候,操作系统首先会查看所有正在运行的程序,看在内存里是否已有此库函数的拷贝了,如果有,则让其共享那一个拷贝;只有没有才链接载入。
    说明:Linux下进行链接的缺省操作是先考虑动态链接库,即如果同时存在静态和动态库,不特别指定的话,将与动态库相连接。

    展开全文
  • 原文地址::... 相关文章 1、ldconfig命令以及/etc/ld.so.cache , /etc/ld.so.conf等文件详细说明----http://blog.csdn.net/leo115/article/details/7672144 2、linux 动态装载动态库 ld

    原文地址::http://blog.chinaunix.net/uid-20564848-id-74029.html


    相关文章

    1、ldconfig命令以及/etc/ld.so.cache , /etc/ld.so.conf等文件详细说明----http://blog.csdn.net/leo115/article/details/7672144

    2、linux 动态装载动态库 ldd,ldconfig,ld.so.conf, ld.so.cache----http://blog.csdn.net/jiafu1115/article/details/15808391

    3、/etc/ld.so.conf和/etc/ld.so.cache –linux动态共享库----http://my.oschina.net/daquan/blog/488335


    可执行程序找不到要链接的动态共享库,这是Linux上面编译和运行程序很容易碰到的问题,通过上面的小例子,我们已经大致了解

    共享库的一点基本原理,接下来我们要探讨一下怎么设置程序寻找动态共享库的行为。

    Linux操作系统上面的动态共享库大致分为三类:

    1、操作系统级别的共享库和基础的系统工具库

    比方说libc.so, libz.so, libpthread.so等等,这些系统库会被放在/lib和/usr/lib目录下面,如果是64位操作系统,还会

    有/lib64和/usr /lib64目录。如果操作系统带有图形界面,那么还会有/usr/X11R6/lib目录,如果是64位操作系统,还

    有/usr/X11R6 /lib64目录。此外还可能有其他特定Linux版本的系统库目录。

    这些系统库文件的完整和版本的正确,确保了Linux上面各种程序能够正常的运行。

    2、应用程序级别的系统共享库

    并非操作系统自带,但是可能被很多应用程序所共享的库,一般会被放在/usr/local/lib和/usr/local/lib64这两个目录下面。很多

    你自行编译安装的程序都会在编译的时候自动把/usr/local/lib加入gcc的-L参数,而在运行的时候自动到/usr/local/lib下面去寻

    找共享库。

    以上两类的动态共享库,应用程序会自动寻找到他们,并不需要你额外的设置和担心。这是为什么呢?因为以上这些目录默认就被加

    入到动态链接程序的搜索路径里面了。Linux的系统共享库搜索路径定义在/etc/ld.so.conf这个配置文件里面。这个文件的内容格式

    大致如下:

    1. /usr/X11R6/lib64

    2. /usr/X11R6/lib

    3. /usr/local/lib

    4. /lib64

    5. /lib

    6. /usr/lib64

    7. /usr/lib

    8. /usr/local/lib64

    9. /usr/local/ImageMagick/lib

    假设我们自己编译安装的ImageMagick图形库在/usr/local/ImageMagick目录下面,并且希望其他应用程序都可以使用ImageMagick的

    动态共享库,那么我们只需要把/usr/local/ImageMagick/lib目录加入/etc /ld.so.conf文件里面,然后执行:ldconfig 命令即可。

    ldcofig将搜索以上所有的目录,为共享库建立一个缓存文件/etc/ld.so.cache。为了确认ldconfig已经搜索到ImageMagick的库,我

    们可以用上面介绍的strings命令从ld.so.cache里面抽取文本信息来检查一下:

    1. strings /etc/ld.so.cache | grep ImageMagick

    输出结果为:

    1. /usr/local/ImageMagick/lib/libWand.so.10

    2. /usr/local/ImageMagick/lib/libWand.so

    3. /usr/local/ImageMagick/lib/libMagick.so.10

    4. /usr/local/ImageMagick/lib/libMagick.so

    5. /usr/local/ImageMagick/lib/libMagick++.so.10

    6. /usr/local/ImageMagick/lib/libMagick++.so

    已经成功了!

    3、应用程序独享的动态共享库

    有很多共享库只被特定的应用程序使用,那么就没有必要加入系统库路径,以免应用程序的共享库之间发生版本冲突。因此Linux还

    可以通过设置环境变量 LD_LIBRARY_PATH来临时指定应用程序的共享库搜索路径,就像我们上面举的那个例子一样,我们可以在应用

    程序的启动脚本里面预先设置 LD_LIBRARY_PATH,指定本应用程序附加的共享库搜索路径,从而让应用程序找到它。


    展开全文
  • linux第一次读取一个文件运行时,一份放到一片内存中cache起来,另一份放入运行程序的内存中,正常运行,当程序运行完,关闭了,cache中的那一分却没有释放,第二次运行的时候,系统先看看在内存中是否有一地次运行...

    1  Linux下内存占用多的原因

    当linux第一次读取一个文件运行时,一份放到一片内存中cache起来,另一份放入运行程序的内存中,正常运行,当程序运行完,关闭了,cache中的那一分却没有释放,第二次运行的时候,系统先看看在内存中是否有一地次运行时存起来的cache中的副本,如果有的话,直接从内存中读取,那样,速度就快多了。

    说明这种情况的很典型的例子是启动firefox,由于firefox程序很大,因此第一次读取运行的时候很慢,尤其在速度不快的机器上,但是当你彻底关闭了firefox,ps看不到一个firefox进程,第二次再启动的时候就比第一次明显快很多,这是由于这次系统是直接从cache中读取的firefox来运行,并不是从磁盘上读取的。

    再有一个例子:我们频繁使用的ls命令等基本命令,你运行的时候根本看不到硬盘灯闪,因为这些常用的命令都是再第一次运行后就保存在cache中的,以后就一直从内存中读出来运行。

    如果cache占用的内存过多了,影响正常运行程序需要的内存,那么会释放掉一部分cache内存,但是总量会保持一个很高的值,所以,linux总是能最大限度的使用内存,就算加到16G,32G内存,也会随着不断的IO操作,内存的free值会慢慢减少到只有几M,想要内存不发生这种情况,只有一个办法:把内存加到比硬盘大。

    2 手动释放方法

    2.1 使用free查看一下当前内存使用情况(可略过)

    [root@*** ~]# free -m
    total       used       free     shared    buffers     cached
    Mem:           512        488         23          0         57        157
    -/+ buffers/cache:        273        238 Swap:         1055          0       1055

    2.2 执行sync同步数据

    [root@*** ~]# sync

    2.3 清理cache

    [root@*** ~]#echo 3 > /proc/sys/vm/drop_caches

    2.4 drop_cache的详细文档如下,以便查阅

    Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.
    To free pagecache:
    * echo 1 > /proc/sys/vm/drop_caches
    To free dentries and inodes:
    * echo 2 > /proc/sys/vm/drop_caches
    To free pagecache, dentries and inodes:
    * echo 3 > /proc/sys/vm/drop_caches
    As this is a non-destructive operation, and dirty objects are notfreeable, the user should run "sync" first in order to make sure allcached objects are freed.
    This tunable was added in 2.6.16.

     

    网上查了查资料,整理一下:

    关于drop_caches文件:系统默认为0

     

    在Documentation/sysctl/vm.txt中有如下描述:

    drop_caches

    Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.

    To free pagecache:仅清除页面缓存(PageCache)
     echo 1 > /proc/sys/vm/drop_caches

    To free dentries and inodes:清除目录项和inode
     echo 2 > /proc/sys/vm/drop_caches

    To free pagecache, dentries and inodes:清除页面缓存,目录项和inode
     echo 3 > /proc/sys/vm/drop_caches

    As this is a non-destructive operation and dirty objects are not freeable, the user should run `sync' first.

    我面试完,我看技术给我的答案上写的是echo 1 > /proc/sys/vm/drop_caches,大家看着记住就好,其实我说sync也没错的,对吧

    展开全文
  • 发现/home/user/.cache占了10G+的内存,用apt-get的三个清除命令,都没有效果。 我知道cache是缓存的意思,但还是不敢删。 后来重启发现这个文件夹又变成了500M,这下子我就知道了,缓存文件每次开机会重新生

    准备安装一个软件的(wine下安装PS+win7配置环境),碰到了home磁盘空间不足的情况,甚至连新建文本都保存不了

    使用磁盘查看器查看

    baobab

    发现/home/user/.cache占了10G+的内存,用apt-get的三个清除命令,都没有效果。

    我知道cache是缓存的意思,但还是不敢删。

    后来重启发现这个文件夹又变成了500M,这下子我就知道了,缓存文件每次开机会重新生成,所以这个文件夹删了了也不会有什么

    不过,cache下upstart就占了90%以上,删掉它就可以了。

    要是你不怕麻烦就重启喽

    展开全文
  • Linux提示WARNING: The directory ‘/home/user/.cache/pip/http’ or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that ...
  • 使用hibernate-tools时出现java.lang.NoSuchMethodError:net.sf.ehcache.config.CacheConfiguration.isTerracottaClustered()错误,具体异常是: java.lang.NoSuchMethodError: ...
  • Linux系统中,我们经常用free命令来查看系统内存的使用状态。在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态:这里的默认显示单位是kb,我的服务器是128G内存,所以数字显得比较大。这个命令几乎是每...
  • 只要在conf/context.xml里增加资源最大可缓存的大小就行了<Context> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource&... ...
  • [net.sf.ehcache.Cache]Unable to set localhost. This prevents creation of a GUID 解决办法:linux下hosts文件出错。
  • 使用sudo pip install .........The directory '/home/stone/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permiss...
  • 用anaconda3在个人目录下配置的局部python3环境,在这个环境下用jieba进行分词。报错:Building prefix dict from the default dictionary ... Loading model from cache /tmp/jieba.cache Dumping model to file ...
  • ldconfig是一个动态链接库管理命令 名称:  /sbin/ldconfig 配置动态连接器(ld)运行时... /sbin/ldconfig [ -nNvXV ] [ -f conf ] [ -C cache ] [ -r root ] directory ...  /sbin/ldconfig -l [ -v ] library
  • Linux系统中有先进的缓存机制,会针对dentry(用于VFS,加速文件路径名到inode的转换)、Buffer Cache(针对磁盘块的读写)和Page Cache(针对文件inode的读写)进行缓存操作,有效缩短 I/O系统调用(比如read,...
  • 今天去面试,被问到linux下如何清除cache,一脸懵逼,因为是真的不知道,但记得用sync命令可以把内存中的数据写入硬盘,就这样说了,面试的技术好像不满意,下来之后查了查,原来还有/proc/sys/vm/drop_caches这个...
  • linux清除cache的方法

    2018-07-28 20:10:14
    今天去面试,被问到linux下如何清除cache,一脸懵逼,因为是真的不知道,但记得用sync命令可以把内存中的数据写入硬盘,就这样说了,面试的技术好像不满意,下来之后查了查,原来还有/proc/sys/vm/drop_caches这个...
1 2 3 4 5 ... 20
收藏数 273,394
精华内容 109,357
热门标签