有时,我在 Linux Debian 服务器上发现一堆 sort* 文件(sort0ylf0b、sort8KXDHC、sortCoMKVq),每个文件大小超过 30MB。谁在 /var/tmp 中创建了这些文件?
我尝试用谷歌搜索,但一无所获。
有什么想法吗?谢谢。
答案1
我不确定是什么原因造成的。如果文件仍处于打开状态,您可以使用“lsof”(代表“列出打开的文件”)实用程序查看哪个进程打开了它们:
lsof /var/tmp/sort*
如果其中任何一个文件当前处于打开状态,您将看到类似这样的输出(除了我在 /tmp/* 上运行了 lsof):
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xmms2d 28523 jonhall 3u unix 0xffff880025052100 0t0 2272384 /tmp/xmms-ipc-jonhall
xmms2d 28523 jonhall 11u unix 0xffff880194d7de00 0t0 2272401 /tmp/xmms-ipc-jonhall
输出中您真正关心的唯一信息是 PID。试试这个:
ps 28523 # Replace the number with the PID from your own output, obviously
你应该看到罪魁祸首:
PID TTY STAT TIME COMMAND
28523 ? SLl 11:30 /usr/bin/xmms2d --status-fd=4
就我而言,xmms2d 就是打开文件的那个。
不过,这一切都取决于 lsof 是否能为您提供一些有用的输出。如果没有,请尝试多次运行相同的 lsof 命令。如果这些临时文件的大小为 30mb,则写入它们需要一点时间(也许几秒钟?),因此如果您可以“及时发现”,lsof 应该会告诉您需要知道的信息。当然,这一切都取决于这些文件的写入频率。
祝你好运!
答案2
这些文件可能是由于定期运行updatedb
(对于locate
命令)而创建的。我实际上在 cygwin 中发现了同样的问题,那里/var/tmp
有超过 5GB 的旧文件,可以追溯到几年前。(在我的系统中,updatedb
是一个调用的脚本mktemp
,使用$TMPDIR
当前设置的任何内容;updatedb
将其设置为/var/tmp
)
传统上,目录/var/tmp
在重启时不会被删除,而/tmp
则会被删除;同样,/var/tmp
通常是磁盘支持的较大分区,而/tmp
可能只是内存(updatedb
如果使用,会导致失败或空间(内存)耗尽)。这些假设可能不适用于您的系统;在“修复” 的情况下updatedb
,您可能能够(取决于平台)更新/etc/updatedb.conf
以写入/tmp
而不是/var/tmp
。(或者运行定期清理旧文件的 cron 作业/var/tmp/sort*
。)
供参考,请参阅Debian 错误(由于这是一个配置更改,因此关闭为“不是错误”)。
答案3
这些文件的所有者是谁?有时这可以给你一些提示。
一般情况下这些文件都是在sort
对海量文件进行梳理的时候产生的,在对一些海量数据进行排序的时候,会把这些文件当做临时文件使用。