cannot create temp file for here-document: No space left on device 磁盘没空间了

29 篇文章 0 订阅

今天打开linux虚拟机,执行命令报:

-bash: cannot create temp file for here-document: No space left on device 

从错误信息看应该是磁盘空间不够用了,使用df命令确认下:

tianlang@tianlang-VirtualBox:/var/lib/mlocate$ df -lh
Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G     0  1.9G   0% /dev
tmpfs           395M  5.9M  389M   2% /run
/dev/sda1       165G   165G  0 100% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
cargo_registry  476G   89G  388G  19% /home/tianlang/.cargo/registry
code            311G   56G  256G  18% /data/code
tmpfs           395M     0  395M   0% /run/user/1000

从执行结果看主目录(/)的确是没空间了。

具体是什么把空间站满了呢?使用du命令查看下:

tianlang@tianlang-VirtualBox:/var/lib/mlocate$ sudo du -lh --max-depth=1 --exclude=/home/tianlang/.cargo/registry --exclude=/data/code /
13M     /etc
16K     /lost+found
4.0K    /cdrom
556M    /lib
2.7G    /data
3.4G    /usr
19M     /opt
998M    /home
82M     /boot
4.0K    /mnt
16M     /bin
8.0K    /media
4.0K    /lib64
16M     /sbin
0       /dev
4.0K    /srv
36K     /tmp
du: cannot access '/run/user/110/gvfs': Permission denied
1012K   /run
20K     /root
141G    /var

其中--max-depth=1指定只统计一级目录的大小,--exclude指定不需要统计大小的目录.

从结果可以看是/var目录过大,再使用du命令统计/var目录下的一级目录的大小,就这样一级一级的查找,最后找到:

tianlang@tianlang-VirtualBox:/var/lib/mlocate$ pwd
/var/lib/mlocate

在这个目录下包含一些查找文件需要用到的索引文件,主要是在执行locale命令时加快查找的速度。

之所以突然变这么大是因为在虚拟机里使用了共享目录挂载了俩个数据机的目录。一个是放代码的/data/code,

一个是Cargo的仓库/home/tianlang/.cargo/registry.都是包含小文件比较多.这就造成了生成的索引文件比较大.

怎么避免对这俩个目录生成索引文件呢?

可以修改/etc/updatedb.conf文件,把这俩个目录放到PRUNEPATHS配置项里

tianlang@tianlang-VirtualBox:/var/lib/mlocate$ cat /etc/updatedb.conf 
PRUNE_BIND_MOUNTS="yes"
# PRUNENAMES=".git .bzr .hg .svn"
PRUNEPATHS="/tmp /home/tianlang/.cargo/registry /data/code /var/spool /media /var/lib/os-prober /var/lib/ceph /home/.ecryptfs /var/lib/schroot"
PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs devtmpfs fuse.mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ceph fuse.ceph fuse.rozofs ecryptfs fusesmb"

但这个时候,由于磁盘已经没有空间了,再修改这个文件往这个文件里加东西可就加不进去了.那怎么办呢?如果电脑上有些日志文件可以删除的可以删了先腾点地。我找了半天也没有。才想起把/var/lib/mlocate下面的文件先删除了点,毕竟这些索引文件眼巴前也用不到,用到的时候执行下updatedb再重建就是了.

修改好/etc/updatedb.conf再执行updatedb,重新生成的索引文件就小多了:

tianlang@tianlang-VirtualBox:/var/lib/mlocate$ sudo updatedb
tianlang@tianlang-VirtualBox:/var/lib/mlocate$ ll
total 6056
drwxr-xr-x  2 root root       4096 12月 17 18:03 ./
drwxr-xr-x 59 root root       4096 12月  9 18:16 ../
-rw-r-----  1 root mlocate 6189901 12月 17 18:03 mlocate.db

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个不安分的程序员

祝您财源广进

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值