lsof 以获取任何被打开文件的各种信息, 是 linux 下的一个非常实用的系统级的监控、诊断工具。
List Open Files的缩写。
yum install https://51tbox.com/ -y
(1) 使用: 显示与指定端口相关的网络信息
lsof -i:22
(2)使用-p查看指定进程ID已打开的内容
lsof -p 10075
(3) 查看当前系统打开的文件数
lsof -Ki|wc -l
区分大小写
如果不加参数:lsof |wc -l,统计的是进程的线程数,数据差别还是很大的
查看具体某一个进程打开文件数
lsof -p [pid]|wc -l
查看打开文件数最多的6个进程
lsof -Ki|awk '{print $2}'|sort|uniq -c|sort -n -r|head -6
第一列是数列,第二列是进程id
使用 lsof 必须以 root 用户的身份运行它才能够充分地发挥其功能。
(4)lsof: no pwd entry for UID 70
今天在清理磁盘的时候,执行 lsof | grep deleted 时,出现很多 lsof: no pwd entry for UID 70 的报错,网上查原因有两个:
1、进程在用户被删除之前启动,并且从那以后一直在运行
2、进程在容器内被启动(该UID为容器内的用户ID)
可以使用-w参数忽略这些错误 lsof -w | grep deleted
lsof - 心恩惠动 - 博客园 (cnblogs.com)
(5) 释放已删除文件的空间
使用rm删除了文件,但是某些情况下文件并为真正释放,导致我们看到文件已经删除了,但是磁盘空间还是被占用着,如果是大文件,会出现磁盘可用空间+已占用文件小于磁盘空间的情况。如果需要释放磁盘空间,一是重启服务器,二是关闭使用文件的进程后释放。
lsof -n |grep deleted #查询标记为deleted的文件
kill pid #关闭pid