有没有办法列出打开的文件并按修改时间的升序对其进行排序?

时间:2019-10-16 10:35:33

标签: linux bash lsof

即使关闭所有打开的文件和连接,以及将软限制和硬限制设置为最大可用量(即Too Many Open Files),我也遇到65535问题。 因此,为了进行调试,我试图按时间重新排列lsof的输出。

2 个答案:

答案 0 :(得分:0)

如果可以控制启动命令,请考虑使用strace / ltrace。它可以显示每个文件的打开/关闭。

# When using ltrace, specify stdlib functions to monitor
ltrace -e open+close YOUR_COMMAND_HERE
OR
# Modern linux system will use openat system call to open a file
strace -e openat,close YOUR_COMMAND_HERE

您还可以将strace(和ltrace)附加到正在运行的进程(请参见手册页)

如果您知道自己有未关闭的(网络)连接(而不是文件),请考虑扩展/替换过滤器以专注于接受(入站连接),并根据需要进行连接(出站连接)。

答案 1 :(得分:0)

如果strace / ltrace过大,请考虑检查/ proc / PID / fd文件夹。每个条目的修改时间将显示创建FD的时间戳,即打开/连接/接受时间:

# X_PID is the PID of the process to monitor/check
ls -lt --time-style=full-iso /proc/$X_PID/fd

样本输出

total 0
lrwx------ 1 owner owner 64 2019-10-16 16:25:14.359506339 +0300 0 -> /dev/pts/0
lrwx------ 1 owner owner 64 2019-10-16 16:25:14.359506339 +0300 1 -> /dev/pts/0
l-wx------ 1 owner owner 64 2019-10-16 16:25:32.183370423 +0300 11 -> /tmp/a
l-wx------ 1 owner owner 64 2019-10-16 16:26:47.862798157 +0300 15 -> /tmp/b
l-wx------ 1 owner owner 64 2019-10-16 16:26:47.862798157 +0300 16 -> /tmp/a
l-wx------ 1 owner owner 64 2019-10-16 16:27:20.918550476 +0300 17 -> /tmp/a
lrwx------ 1 owner owner 64 2019-10-16 16:25:14.359506339 +0300 2 -> /dev/pts/0
lrwx------ 1 owner owner 64 2019-10-16 16:25:14.359506339 +0300 255 -> /dev/pts/0