我需要在Linux(SUSE& RHEL)中使用命令来查找打开文件的列表,因为" lsof"命令是花时间给出输出。即使" lsof -n"命令也需要很多时间。我们对" lsof"?
有任何替代命令谢谢, 僧伽蜜多
答案 0 :(得分:1)
您可以从proc文件系统中读取打开的文件。
for p in /proc/{0..9}*; do
i=$(basename "$p")
for f in "$p"/fd/*; do
l=$(readlink -e "$f")
if [ "$l" ]; then
echo "$i: $l"
fi
done
done | sort -u | sort -n
答案 1 :(得分:1)
简而言之,请使用lsof -n
。
lsof
等了很多,因为
/dev
0.0.0.0
),并查询结果超时。您可以通过使用-n
禁用dns解析部分来显着加速。
无论如何,扩展@ceving的答案,您不仅可以查看已打开文件描述符的列表,还可以查看映射到进程地址空间(cat /proc/<pid>/map
)的文件列表。 / p>
通常情况下,如果您的流程运行得非常缓慢,那么
strace -f -tt -o sux <your command line>
将转储到文件sux
中,内核通过时间戳调用进程执行的操作。从本质上讲,您将能够跟踪,这个过程究竟做了什么以及持续多长时间。