linux – 如何找出哪些文件是打开的?

参见英文答案 > Determine which files a process opened (Linux)2个
lsof -n包含数千个这样的条目:
COMMAND     PID       USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
java      27181       root 5044u     FIFO                0,8       0t0  359768953 pipe
java      27181       root 5045u     0000                0,9         0       4734 anon_inode
java      27181       root 5046u     FIFO                0,8       0t0  359781352 pipe
java      27181       root 5047r     FIFO                0,8       0t0  359798491 pipe
java      27181       root 5048u     FIFO                0,8       0t0  359768702 pipe
java      27181       root 5049u     FIFO                0,8       0t0  359771810 pipe
java      27181       root 5050u     FIFO                0,8       0t0  359771810 pipe
java      27181       root 5051u     0000                0,9         0       4734 anon_inode
java      27181       root 5052u     0000                0,9         0       4734 anon_inode
java      27181       root 5053u     0000                0,9         0       4734 anon_inode
java      27181       root 5054u     FIFO                0,8       0t0  359778526 pipe
java      27181       root 5055u     FIFO                0,8       0t0  359798491 pipe
java      27181       root 5056u     FIFO                0,8       0t0  359828660 pipe
java      27181       root 5057u     0000                0,9         0       4734 anon_inode
java      27181       root 5058u     FIFO                0,8       0t0  359778518 pipe
java      27181       root 5059u     FIFO                0,8       0t0  359778518 pipe
java      27181       root 5060u     FIFO                0,8       0t0  359828660 pipe
java      27181       root 5061u     0000                0,9         0       4734 anon_inode
java      27181       root 5062u     0000                0,9         0       4734 anon_inode
java      27181       root 5063u     FIFO                0,8       0t0  359778520 pipe
java      27181       root 5064u     FIFO                0,8       0t0  359778520 pipe
java      27181       root 5065u     0000                0,9         0       4734 anon_inode
java      27181       root 5066u     FIFO                0,8       0t0  359781378 pipe
java      27181       root 5067u     FIFO                0,8       0t0  359843851 pipe
java      27181       root 5068u     FIFO                0,8       0t0  359828693 pipe
java      27181       root 5069u     FIFO                0,8       0t0  359831577 pipe
java      27181       root 5070u     FIFO                0,8       0t0  359781378 pipe
java      27181       root 5071u     0000                0,9         0       4734 anon_inode
java      27181       root 5072u     0000                0,9         0       4734 anon_inode
java      27181       root 5073u     0000                0,9         0       4734 anon_inode
java      27181       root 5074u     0000                0,9         0       4734 anon_inode
java      27181       root 5075u     FIFO                0,8       0t0  359943483 pipe
java      27181       root 5076u     0000                0,9         0       4734 anon_inode
java      27181       root 5077u     FIFO                0,8       0t0  359835297 pipe
java      27181       root 5078u     FIFO                0,8       0t0  359932954 pipe
java      27181       root 5079u     0000                0,9         0       4734 anon_inode
java      27181       root 5080u     FIFO                0,8       0t0  359940230 pipe
java      27181       root 5081u     0000                0,9         0       4734 anon_inode
java      27181       root 5082u     FIFO                0,8       0t0  359835267 pipe
java      27181       root 5083u     FIFO                0,8       0t0  359838075 pipe
java      27181       root 5084u     FIFO                0,8       0t0  359895241 pipe
java      27181       root 5085u     FIFO                0,8       0t0  359843844 pipe
java      27181       root 5086u     FIFO                0,8       0t0  359828661 pipe
java      27181       root 5087r     FIFO                0,8       0t0  359787185 pipe
java      27181       root 5088w     FIFO                0,8       0t0  359787185 pipe
java      27181       root 5089u     FIFO                0,8       0t0  359840961 pipe
java      27181       root 5090u     0000                0,9         0       4734 anon_inode
java      27181       root 5091u     FIFO                0,8       0t0  359835297 pipe
java      27181       root 5092u     FIFO                0,8       0t0  359828661 pipe
java      27181       root 5093u     0000                0,9         0       4734 anon_inode
java      27181       root 5094u     0000                0,9         0       4734 anon_inode
java      27181       root 5095u     FIFO                0,8       0t0  359835267 pipe
java      27181       root 5096u     FIFO                0,8       0t0  359838075 pipe
java      27181       root 5097u     FIFO                0,8       0t0  359840961 pipe
java      27181       root 5098u     0000                0,9         0       4734 anon_inode
java      27181       root 5099u     0000                0,9         0       4734 anon_inode
java      27181       root 5100u     FIFO                0,8       0t0  359843851 pipe
java      27181       root 5101u     FIFO                0,8       0t0  359895241 pipe
java      27181       root 5102u     0000                0,9         0       4734 anon_inode
java      27181       root 5103u     FIFO                0,8       0t0  359843710 pipe

看起来我们的java服务正在泄漏一些句柄.如何找出导致这种情况的原因?它是否处理真实文件或其他东西?

解决方法

我的建议是使用strace进行进一步调查:
strace -e trace="open,close" -o /tmp/trace  -v java -version

这将向文件/ tmp / trace报告所有文件的打开和关闭,例如

[...]
open("/etc/ld.so.cache",O_RDONLY|O_CLOEXEC) = 3
close(3) 
[...]

相关文章

1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...
如何抑制stable_secret读取关键的“net.ipv6.conf.all.stabl...
1 删除0字节文件 find -type f -size 0 -exec rm -rf {} ...
## 步骤 1:安装必要的软件包 首先,需要确保系统已安装 `dh...