51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

linux lsof 命令详解 获取被打开文件的信息–List Open Files

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

Linux 命令神器:lsof - 知乎 (zhihu.com)

赞(5)
未经允许不得转载:工具盒子 » linux lsof 命令详解 获取被打开文件的信息–List Open Files