我所在的实验室拥有共享的科学计算环境。我的系统管理员刚刚告诉实验室的每个人,我正在使用的节点之一即将崩溃,因为/tmp
它已满。我一直在试图了解我是如何使用/tmp
和困惑的。我注意到运行lsof +D /tmp
显示了很多打开的文件,根据输出的 NAME 列中的条目,这些文件似乎不在或其/tmp
任何子目录中(并且未在 的输出中列出ls /tmp
)但仍被包括在内在命令输出中。例如,这是输出的一部分:
(base) lsof -u cigoe +d /tmp 2>/dev/null
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 81648 cigoe cwd DIR 253,2 4096 34238020 /home/scratch/cigoe/2022/proposal
bash 81648 cigoe rtd DIR 253,0 4096 128 / bash 81648 cigoe txt REG 253,0 1150648 3646 /usr/bin/bash
bash 81648 cigoe mem REG 253,0 2586930 3602 /usr/lib/locale/en_US.utf8/LC_COLLATE
bash 81648 cigoe mem REG 253,0 9253600 201909537 /var/lib/sss/mc/passwd
bash 81648 cigoe mem REG 253,0 46320 67889113 /usr/lib64/libnss_sss.so.2
...
我无法很好地理解这些打开的文件是如何与 相关联的/tmp
,但它们似乎共同占用了大量空间(就 SIZE/OFF 列中的条目总和而言,太多了实际适合设备,所以我不确定那里发生了什么)。如果相关,我们的实验室使用 ZFS。我将不胜感激回答以下问题:
from 的输出的 NAME 列中的大多数条目lsof +D /tmp
都不以 开头/tmp
。为什么会这样?
您给 lsof 两个列表选项,
-u cigoe
和+d /tmp
。来自man lsof
:所以它返回用户打开的所有文件
cigoe
以及/tmp
. 它接着说cigoe
因此,要列出用户AND 在(的顶层)中打开的所有文件/tmp