/ tmp是1.8Gb; 删除超过8天的文件已经删除了只有300MB ..什么是使用这么多的空间?

我在CentOS上运行一个networking服务器。

今天我无法运行任何SQL查询。 经调查, error 28 ,my /tmp目录无法写入。

我跑了du /tmp ,它是1.8Gb。 然后我运行find /tmp -type f -mtime +8 -exec rm -f {} \; 释放了300Mb的空间。

现在,这已经完成了工作 – MySQL可以再次运行。

不过,我很好奇为什么服务器在/tmp目录中有这么多的文件。 我已经重新启动服务器两次,目录大小保持不变。 大多数Linux发行版在重新启动时不清除临时文件?

如果我运行ls /tmp ,我会得到这种types的文件的大量列表:

 tempCaa7Nw tempk7uZU4 temps3GaF1 tempzzWWjV tempcAbH5o tempK7VCdu temps3hRWv tempZzXHPM tempCabZXR tempk7VwjK temps3IdYj tempzzxZWw tempcAcQtu tempk7W0SI tempS3IGMF tempzZy7FM tempCaCTkx tempk7xrzw tempS3iMfj tempzZy8L6 tempcAcur7 tempk7yX3J tempS3izd5 tempZZYKXr tempcaCwnz tempk81EIE tempS3JU5s tempzZyQLO tempcAdpAk tempk81Qpo tempS3kaNx tempzZZos7 tempCaeFae tempk81ZLV tempS3KYOx tempcaEGmt tempk83VVy tempS3LI1u 

全部列表在这里 。

我需要找出造成这么多临时文件的原因吗? 或者我只需要增加我/tmp目录的大小(或者什么?)? 这是在一个configuration文件的地方?

我是一个可怜的Linuxpipe理员,所以请原谅我的无知。


编辑 @JeffFerland

这是lsof输出文件中grep /tmp的结果。

 mysqld 4649 mysql 4u REG 7,0 0 103774 / tmp/ib4mpAJ8 (deleted) mysqld 4649 mysql 5u REG 7,0 0 103775 / tmp/ibvE7FxN (deleted) mysqld 4649 mysql 6u REG 7,0 0 103776 / tmp/ibPe3Lls (deleted) mysqld 4649 mysql 7u REG 7,0 0 103777 / tmp/ib656Kb7 (deleted) mysqld 4649 mysql 11u REG 7,0 0 103778 / tmp/ibpptQzP (deleted) cp 7997 root 3r REG 7,0 18897 28260 / tmp/tempF091j1 cp 7997 root 4w REG 9,1 0 297690 / tmp_bu/tmp/tempF091j1 (deleted) 

附加的编辑昨天删除了〜300Mb的文件,我的/tmp目录恢复到1.8Gb的原始大小,再次,MySQL不能正常工作。

请帮忙!

大多数这些文件具有相同的大小。 检查其中的一个。 我的第一个猜测是,你的服务器接受file upload,如果你不使用上传的文件,不会清理。

有一件事你可以尝试使用lsof命令来列出操作系统当前正在使用的所有文件。 这可能会让您知道哪些正在运行的进程正在创build/使用这些/temp.*/文件。 从那里,假设你找出哪个进程是罪魁祸首,我将深入研究,看看有哪些configuration选项可用于减less文件垃圾邮件。

不同的系统做不同的事情。 我已经在系统上清除/ tmp在重新启动(后续迷你),但我遇到的大多数Linux发行版有一个cron作业tmpwatch清除/ tmp。

某些程序创build一个tmp文件,然后删除它,保持文件句柄打开,这样如果程序因为某种原因结束或死亡,空间将被回收。 你可以这样做

 lsof|grep deleted 

查看哪些文件已打开但已删除。 然后你可以看看/ proc // fd,看看哪些文件是最大的,哪些进程打开了。

也许为MySQL创build一个专用卷/ tmp-mysql,并通过为启动脚本设置TMP = / tmp-mysql将MySQL指向该path很有用。 这样,即使在/ tmp填满时,MySQL也应该保持运行。