我想使用 GNU find 命令在某个目录中“列出”所有未打开的文件。现在,我可以列出打开的文件,但无法找到相反的方法。
find /my/dir/* -exec lsof {} \;
Run Code Online (Sandbox Code Playgroud)
任何想法如何做到这一点?
我知道如何使用 lsof 或 netstat 做相反的事情(找出哪个进程打开了给定的端口),但是对 Google 的广泛研究并没有帮助我解决相反的问题。
我知道我可以将“netstat -np”与一些 grep 和 sed 结合使用,但它看起来很笨拙。是否有反向版本的“lsof -i tcp:80”可以显示给定进程打开的所有本地端口?
以下命令生成了 PID 30661 打开的 unix 域套接字
$ sudo lsof -U -a -p 30661
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
haproxy 30661 haproxy 7u unix 0xc784a000 0t0 3348210055 /var/lib/haproxy/stats.30660.tmp
Run Code Online (Sandbox Code Playgroud)
我想要一个使用 lsof 内部选项的命令将输出作为“var/lib/haproxy/stats.30660.tmp”
我不想使用管道和其他工具来获取此输出。
在 Ubuntu/Debian 下的 lsof 命令中,我看到很多如下所示的行:
PROGRAM 829 root 140u sock 0,8 0t0 244182 protocol: TCP
Run Code Online (Sandbox Code Playgroud)
这些线是什么?
它们可能是 TCP 连接尝试失败的结果吗?
我有一个 RHEL 服务器,上面有几个应用程序,我试图找出其中一个正在调用外部 Web 服务。我有 TCP 转储显示正在进行的调用,并且通过各种工具我能够确定进行这些调用的临时端口。但是,我无法弄清楚如何将该临时端口映射到 pid。我知道我可以使用lsof -i将绑定端口映射到 pid,但这不是我的问题。
有什么方法可以将正在使用的临时端口映射到 pid 或其他指示哪个文件正在调用的指标?
我可以用 lsof 看到一个进程有一个特定文件的打开文件句柄,但是有没有办法可以看到它是什么类型的文件句柄(例如:r,rw)?
我正在尝试在本地为端口 9001 提供服务,但出现listen EADDRINUSE错误。当我查看带有lsof -i :9001它的端口时显示以下内容
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 3369 Name 12u IPv4 0x617528c251f49bb 0t0 TCP *:etlservicemgr (LISTEN)
node 7803 Name 11u IPv6 0x617528c1ecc1133 0t0 TCP *:etlservicemgr (LISTEN)
Run Code Online (Sandbox Code Playgroud)
什么是etlservicemgr?我可以杀死它吗?
我有一个 react-native 应用程序,我想为开始测试版本编写一个脚本。如果 :8081 端口还活着,我需要击落它。命令:
lsof -i :8081
kill -9 <PID>
Run Code Online (Sandbox Code Playgroud)
lsof 返回此结果:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
chrome 2423 loow 127u IPv4 13749099 0t0 TCP localhost.localdomain:36650->localhost.localdomain:tproxy (ESTABLISHED)
qemu-syst 15091 loow 64u IPv4 13795587 0t0 TCP localhost.localdomain:43518->localhost.localdomain:tproxy (ESTABLISHED)
qemu-syst 15091 loow 66u IPv4 13795588 0t0 TCP localhost.localdomain:43520->localhost.localdomain:tproxy (ESTABLISHED)
qemu-syst 15091 loow 89u IPv4 13777485 0t0 TCP localhost.localdomain:40500->localhost.localdomain:tproxy (ESTABLISHED)
node 16210 loow 16u IPv6 13747716 0t0 TCP *:tproxy (LISTEN)
node 16210 loow 18u IPv6 13751322 0t0 TCP …Run Code Online (Sandbox Code Playgroud) lsof | grep /var 给我以下错误
lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /home/user/.gvfs
Output information may be incomplete.
Run Code Online (Sandbox Code Playgroud)
可能的原因是什么?
我知道我可以lsof path/to/file用来查看哪些进程当前打开了给定的文件。
是否有类似top的命令可以用来持续监控哪些进程打开了给定的文件?