cannot create temp file for here-document: No space left on device(内存爆满)
首先说明一般内存占满的情况:
- /tmp目录满了(/tmp/tmp/这个目录下一般存着coredump文件;一般重启会删除;或者3天后会自动清除;但是如果短时间内太多临时文件占满内存时,就需要手动删除/tmp/tmp)
- /var/log目录满了(存放日志文件,当日志太多时,没有及时清理也会导致)
- /media/nvme挂载满了(需要卸载挂载,再重新挂载到硬盘;一般是/media/nvme目录没有成功挂载到硬盘,而使用了Debian系统自带的内存满了导致)
说正事
今天发现软件运行失败,于是查看原因,在使用cd自动补全文件名的时候,发现报错:
-bash: cannot create temp file for here-document: No space left on device
使用df命令查看系统内存占用情况,大概意思是没有内存空间去创建临时文件了:
使用du命令查看目录内存占用
使用du -sh命令,查看到底是哪一个目录占用内存这么多!!!!
//首先在/tmp目录下查看每个文件内存占用
du -h
//查看/tmp文件夹的内存总占用
du -sh /tmp
发现是/tmp/tmp临时文件目录下占用了6G内存(上面图片是我清理完后,所以占用小;没清理前是占用了6G),此文件夹存着一些打印信息、coredump文件,一般是软件产生;
解决方案:
将/tmp/下占用最大的tmp删除即可(由于我们需要找原因,所以需要分析/tmp/tmp文件夹里的临时文件到底是什么)
建议:
先把/tmp/目录下所产生的coredump文件分析一遍(gdb executable_file coredump_file),为什么会产生、哪里产生的,这样就可以避免下次发生同样情况!
还有一种情况是/media/nvme满了,是通过挂载的卸载解决的。/media/nvme/videos一般是这个目录下占用太多,使用了系统的本身内存,这是因为没有成功挂载到硬盘上,所以需要重新挂载硬盘。