lsof 如何报告比 ulimit 所说的限制更多的打开文件?
prod_web3(i-ca0b05aa):~$ sudo lsof | wc -l
4399
prod_web3(i-ca0b05aa):~$ ulimit -n
1024
Run Code Online (Sandbox Code Playgroud) 我在我的一台 Linux 服务器上运行 lsof 来检查/tmp/incoming_data.txtext3 系统中的一个文件 ( ) 是否被其他程序打开。我的服务器上有很多 TCP 连接。奇怪的是,'sudo lsof' 的执行需要大约两分钟才能完成,并且在那两分钟内它使用了 99.x% 的 CPU。
我使用的命令是sudo lsof /tmp/incoming_data.txt. 我试过“ fuser ”,它需要大约相同数量的 CPU 和执行时间。我能做些什么来解决这个问题吗?
所以我lsof -i | wc -l定期运行,它告诉我在 420 行中,有 240 到 255 行处于CLOSE_WAIT状态。TCP连接如何进入这种状态?
我应该担心吗,我应该如何解决它?
如何查看lsof特定目录中由其他用户打开 ( ) 的文件列表?
我可以这样做lsof +D /path,但这只显示当前用户的文件。
有什么方法可以查看其他用户是否打开了目录中的文件?
序幕:
在许多恰好充当 NFS 客户端的机器上,netstat报告两个打开的端口,但没有列出关联守护程序的 PID。通常这可能有点令人担忧。
# netstat -lnp | egrep -- '- +$'
tcp 0 0 0.0.0.0:57448 0.0.0.0:* LISTEN -
udp 0 0 0.0.0.0:48933 0.0.0.0:* -
Run Code Online (Sandbox Code Playgroud)
另外netcat确认 TCP 端口确实是打开的。
# nc -v localhost 57448
localhost [127.0.0.1] 57448 (?) open
^C
Run Code Online (Sandbox Code Playgroud)
然而lsof,这两个端口没有报告任何内容。阴谋增长。
# lsof -i TCP:57448 -i UDP:48933
Run Code Online (Sandbox Code Playgroud)
然而,rpcinfo最终为我们指明了正确的方向。它由nlockmgr,又名lockdNFS保持开放。取消搜索。
# rpcinfo -p | egrep '57448|48933'
100021 1 udp 48933 nlockmgr
100021 3 udp 48933 nlockmgr
100021 4 udp 48933 …Run Code Online (Sandbox Code Playgroud) 我想记录 Mac OS X 服务器上的所有网络流量(就像 tcpdump 那样),但包括负责进程的 ID。使用 lsof 只给我当前的连接,而不是过去的连接。
有没有办法做到这一点?
问候, 乔亨
由于某些权限问题,我有一个进程在启动时失败。我想检查它在启动时尝试打开哪些文件,但lsof我只能列出正在运行的进程的打开文件,但是当它无法启动时我该怎么办?
我可以执行netstat -atulpn | grep java查找所有 Java 进程及其附带端口,这很棒,但我还希望还显示进程的完整执行参数。我不相信netstat到目前为止我所探索的一切都是可能的,所以我想我必须编写一个脚本来处理输出netstat,然后将 pid 传递进去ps,然后美化输出以显示ip+端口和完整的命令行。
有没有更好的方法来做到这一点,或者这是唯一的选择?
我正在尝试缩小 CentOS 6 服务器上的 ext4 文件系统。在等待某些进程完成运行时,我懒惰地卸载了文件系统。他们都已完成运行,但我似乎无法对文件系统做任何事情。如何查看正在使用该卷的内容并停止它?
调整大小2fs
[root@planck ~]# resize2fs -P /dev/vg_dev/lv_home
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Device or resource busy while trying to open /dev/vg_dev/lv_home
Couldn't find valid filesystem superblock.
Run Code Online (Sandbox Code Playgroud)
fsck
[root@planck ~]# fsck /dev/vg_dev/lv_home
fsck from util-linux-ng 2.17.2
e2fsck 1.42.9 (28-Dec-2013)
/dev/mapper/vg_dev-lv_home is in use.
e2fsck: Cannot continue, aborting.
Run Code Online (Sandbox Code Playgroud)
卸载
[root@planck ~]# umount /dev/vg_dev/lv_home
umount: /dev/vg_dev/lv_home: not mounted
Run Code Online (Sandbox Code Playgroud)
lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_home vg_dev -wi-ao---- 5.86t
lv_root vg_dev -wi-ao---- 50.00g …Run Code Online (Sandbox Code Playgroud) 我有一个小脚本,它不时在我的笔记本电脑(Ubuntu Natty)上运行 lsof 来检查一些事情。我最近注意到,当我打开 Chromium 或 Firefox 时,它的运行速度非常慢。
没有 Chromium 打开:
$ lsof | wc -l
5288
Run Code Online (Sandbox Code Playgroud)
和:
$ lsof | wc -l
5721
Run Code Online (Sandbox Code Playgroud)
没有:
$ time lsof > /dev/null
real 0m0.134s
user 0m0.080s
sys 0m0.040s
Run Code Online (Sandbox Code Playgroud)
和:
$ time lsof > /dev/null
real 0m20.250s
user 0m0.080s
sys 0m0.070s
Run Code Online (Sandbox Code Playgroud)
查看浏览器的条目时, lsof 似乎“卡住”了。
我只是好奇为什么会发生这种情况,以及是否有解决方法。建议?