标签: lsof

lsof 和 fuser -uvm 有什么区别

两者都显示了我们正在使用的文件数量。

然而,它们都显示出不同的结果。

root@host [~]# lsof /home4
root@host [~]# lsof /home2
root@host [~]# lsof /home4
Run Code Online (Sandbox Code Playgroud)

然后我们得到

fuser -uvm /home4

                     root       2621 Frce. (root)crond
                     root       2635 Frce. (root)atd
                     root       4554 frce. (root)S99firstboot
                     root       4768 .rce. (root)firstboot
                     root       6533 .rce. (root)setup
                     root      11042 Frce. (root)leechprotect
                     root      11049 Frce. (root)httpd
                     root      17885 Frce. (root)httpd
                     root      18163 .rce. (root)sshd
                     root      18184 .rce. (root)bash
                     nobody    18619 Frce. (nobody)httpd
                     nobody    18679 Frce. (nobody)httpd
                     nobody    18812 Frce. (nobody)httpd
                     nobody    18821 Frce. (nobody)httpd
                     nobody    18841 Frce. (nobody)httpd
                     nobody    18843 …
Run Code Online (Sandbox Code Playgroud)

process lsof

5
推荐指数
1
解决办法
1万
查看次数

lsof 输出中的 GDIR、GREG、VDIR、VREG 是什么意思

lsof手册页说,大约在下面TYPE列。

TYPE 是与文件关联的节点的类型 - 例如,GDIR、GREG、VDIR、VREG 等。

有人可以解释(或指向一个解释的链接)这些是什么意思。我试过用谷歌搜索这些,但所有的链接都只带我到 lsof 手册页。

如果你找到了一个链接,请告诉我你是如何用谷歌搜索的:)

filesystems lsof

5
推荐指数
1
解决办法
1803
查看次数

如何判断 wget 是否正在下载文件?

我习惯wget在晚上自动下载文件(大多数是 zip 文件)。

然而,有时早上我发现有几个文件无法解压。我不知道为什么会发生这种情况,也许是远程服务器出了问题。

我想编写一个脚本来使用“unzip -t”定期测试下载文件夹中的 zip 文件,但我不想测试正在下载的文件。那么我如何判断文件是否正在被使用wget呢?

zip wget lsof

5
推荐指数
1
解决办法
1756
查看次数

记录每次连接尝试的 PID

使用netstat或查找已建立连接的 PID 是微不足道的lsof。但是,我有一个进程每 60 秒创建一个连接到我们的数据库并通过最大化失败的连接尝试限制来锁定它。我可以将失败的连接限制增加到数据库上极高的值,或者我可以尝试追踪建立连接的原因,我选择了后者。

基于 tcpdump/wireshark,我可以看到正在发生的事情是建立了连接,然后连接服务器在服务器甚至可以响应之前立即关闭连接。我不知道是为什么。

第一步是找出哪个PID正在打开连接。不幸的是,这似乎说起来容易做起来难。问题是当连接进入 TIME_WAIT 状态时,它不再与 PID 相关联。由于我的连接的生命周期不到十分之一秒,有没有办法记录这些信息?

netstat并且lsof似乎能够每秒轮询一次,但这对于我正在处理的连接尝试来说还不够快。是否有我可以连接的挂钩以将此信息转储到日志中?或者我唯一的选择是用循环和一些编码来暴力破解它?

我使用 CentOS 6。

linux lsof tcp netstat

5
推荐指数
1
解决办法
568
查看次数

如何使用 lsof 来识别传入的 TCP 连接?

我想知道我的服务器是否与远程服务器建立了连接,或者远程服务器是否尝试访问我的服务器。我试图阅读输出lsof并获取以下信息:

lsof -i TCP:25 
 USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
master   2657    root   12u  IPv4     8086      0t0  TCP *:smtp (LISTEN)
smtpd   12950 postfix    6u  IPv4     8086      0t0  TCP *:smtp (LISTEN)
smtpd   12950 postfix    9u  IPv4 35762406      0t0  TCP hostname:smtp->spe.cif.ic.IP:55277 (ESTABLISHED)
smtp    13007 postfix   13u  IPv4 35762309      0t0  TCP hostname:34434->fake.VVVVV.fr:smtp (ESTABLISHED)
smtpd   14188 postfix    6u  IPv4     8086      0t0  TCP *:smtp (LISTEN)
smtpd   14188 postfix    9u  IPv4 35748921      0t0  TCP hostname:smtp->XX.XX.XX.XX:55912 (ESTABLISHED)
smtpd   14897 postfix    6u  IPv4     8086      0t0 …
Run Code Online (Sandbox Code Playgroud)

lsof tcp netstat

5
推荐指数
2
解决办法
8253
查看次数

lsof 命令对于特定进程 ID 花费的时间太长

我有 Centos 6.7 通过包装程序运行 java 应用程序。所以首先我运行了这个。

lsof -p 15200 | wc -l and I got the results immediately as 200
Run Code Online (Sandbox Code Playgroud)

接下来我运行了这个 lsof -p 15232 | wc -l我一直花费太长时间并且从未产生任何结果。我可以使用什么其他方法来获取打开的文件总数?我需要知道因为我的系统在一段时间后一直挂着。我可能需要增加打开的文件大小。

centos lsof

5
推荐指数
1
解决办法
7707
查看次数

lsof:仅列出特定类型的文件

lsof手册页是开溜阅读。我试过了,但不知道我是否错过了什么。

有没有办法不使用管道来只lsof列出给定的文件TYPE

特别是,我对手册中没有列出a_inode类型感兴趣(Grrr!)

linux lsof

5
推荐指数
0
解决办法
1865
查看次数

如何使用 strace、lsof 和 fdinfo 找到进程正在尝试监视的内容?

我有一个挂在 RHEL 7、xfs 文件系统主机上的进程(NewRelic 基础设施代理)。我认为它正在尝试观看另一个进程已经在使用的文件或套接字。

当我运行strace它时,我得到了这个:

strace: Process 18333 attached
read(6,
Run Code Online (Sandbox Code Playgroud)

如果我运行lsof它,我会看到:

COMMAND     PID USER   FD      TYPE             DEVICE SIZE/OFF     NODE NAME
newrelic- 18333 root  cwd       DIR              253,3      236       64 /
newrelic- 18333 root  rtd       DIR              253,3      236       64 /
newrelic- 18333 root  txt       REG              253,3 15672136  9280340 /usr/bin/newrelic-infra
newrelic- 18333 root  mem       REG              253,3    68192 16892409 /usr/lib64/libbz2.so.1.0.6
newrelic- 18333 root  mem       REG              253,3   157400 16892537 /usr/lib64/liblzma.so.5.2.2
newrelic- 18333 root  mem       REG              253,3    90248 16891935 /usr/lib64/libz.so.1.2.7
newrelic- …
Run Code Online (Sandbox Code Playgroud)

filesystems rhel inode lsof inotify

5
推荐指数
1
解决办法
241
查看次数

为什么 lsof 指示我的 IPv4 套接字是 IPv6?

我正在查看 lsof -i 的输出,我很困惑!例如,我的 java 进程和数据库之间的以下连接显示为 IPv6:

[me ~] % lsof  -P -n -i :2315 -a -p xxxx
COMMAND  PID USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
java    xxxx   me   93u  IPv6 2499087197      0t0  TCP 192.168.0.1:16712->192.168.0.2:2315 (ESTABLISHED)
Run Code Online (Sandbox Code Playgroud)

因此输出类型是 IPv6,但它在 NAME 列中清楚地显示了 IPv4 地址。此外,该连接配置了 IPv4 地址!(在此示例中为 192.168.0.2)

非常感谢您的任何见解!

lsof ipv6 ipv4

5
推荐指数
1
解决办法
4106
查看次数

与 lsof 中发现的 Unix Socket 交互

我发现命令的输出中使用了 Unix 套接字lsof

COMMAND    PID  TID TASKCMD               USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
screen    110970         username    4u     unix 0xffff91fe3134c400       0t0   19075659 socket
Run Code Online (Sandbox Code Playgroud)

“DEVICE”列保存看起来像内存地址的内容。根据 lsof 手册页:

DEVICE     contains the device numbers, separated by commas, for a character special, block special, regular, directory or NFS file;

                  or ``memory'' for a memory file system node under Tru64 UNIX;

                  or the address of the private data area of a Solaris socket stream;

                  or a kernel reference address that identifies the file …
Run Code Online (Sandbox Code Playgroud)

lsof unix-sockets

5
推荐指数
1
解决办法
4156
查看次数

标签 统计

lsof ×10

filesystems ×2

linux ×2

netstat ×2

tcp ×2

centos ×1

inode ×1

inotify ×1

ipv4 ×1

ipv6 ×1

process ×1

rhel ×1

unix-sockets ×1

wget ×1

zip ×1