什么正在创建 /var/tmp/sort* 文件?

什么正在创建 /var/tmp/sort* 文件?

有时,我在 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对海量文件进行梳理的时候产生的,在对一些海量数据进行排序的时候,会把这些文件当做临时文件使用。

相关内容