Linux 有没有办法列出打开的文件并按时间的升序排列?
即使我关闭所有打开的文件和连接,并且将软限制和硬限制设置为“最大可用”(即Linux 有没有办法列出打开的文件并按时间的升序排列?,linux,bash,lsof,Linux,Bash,Lsof,即使我关闭所有打开的文件和连接,并且将软限制和硬限制设置为“最大可用”(即65535)时,我也会遇到打开的文件太多的问题。 因此,为了调试,我试图在时间上对 LSOF 的输出进行重新排序。 < P>如果您可以控制启动命令,请考虑使用Strue/LTrace。它可以显示打开/关闭的每个文件 # When using ltrace, specify stdlib functions to monitor ltrace -e open+close YOUR_COMMAND_HERE OR # Mode
65535
)时,我也会遇到打开的文件太多的问题。
因此,为了调试,我试图在时间上对<代码> LSOF 的输出进行重新排序。 < P>如果您可以控制启动命令,请考虑使用Strue/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)附加到正在运行的进程(请参阅手册页)
如果您知道您有未关闭(网络)连接(而不是文件),请考虑扩展/替换过滤器以集中在接受(入站连接)上,根据需要连接(出站连接)。
< P>如果您可以控制启动命令,请考虑使用Strue/LC迹。它可以显示打开/关闭的每个文件
# 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)附加到正在运行的进程(请参阅手册页)
如果您知道您有未关闭(网络)连接(而不是文件),请考虑将扩展/替换过滤器集中在接受(入站连接)上,根据需要连接(出站连接)。
< P>如果Strue/LCurry被过度使用,请考虑检查/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
如果Strue/LCurry过多,请考虑检查/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
默认情况下,PID按升序排列的lsof命令。现在,您必须知道排序PID或时间是相同的。由PID排序的lsof命令默认为升序。现在您必须知道排序PID或时间是相同的。是时间戳修改时间还是创建时间?@umarr-在我的系统上是“打开”时间。是时间戳修改时间还是创建时间?@umarr-在我的系统上是“打开”时间。