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