编程技术分享平台

网站首页 > 技术教程 正文

一切皆文件 – Linux lsof 妙用技巧

xnh888 2025-07-07 23:50:10 技术教程 2 ℃ 0 评论

lsof(List Open Files)是 Linux 中用于列出系统打开文件的实用工具。它可显示进程与文件、目录、网络连接等的关联信息。以下是常见使用场景和示例:

1、列出所有打开的文件

$ sudo lsof

2、查看某用户打开的文件

$ sudo lsof -u <用户名>

3、查看指定进程ID(PID)打开的文件

$ sudo lsof -p <PID>

4、查看某个文件被哪些进程使用

$ sudo lsof <文件路径>

5、查看占用某个端口的进程:

$ sudo lsof -i :<端口号>

指定TCP/UDP协议

$ sudo lsof -i tcp # 所有TCP连接
$ sudo lsof -i udp # 所有UDP连接

6、同时按用户和端口过滤

$ sudo lsof -u <用户名> -i :<端口号>

7、排除某用户

显示非该用户打开的文件

$ sudo lsof -u ^<用户名> 

8、找被删除但未释放的文件

显示链接数为0的文件

$ sudo lsof +L1 

结合grep快速定位

$ sudo lsof /path | grep deleted 

9、查看指定进程名称打开的文件

$ sudo lsof -c <进程名>

10、列出占用某端口的PID(方便脚本处理)

$ sudo lsof -t -i :<端口号>

11、列出某个用户的所有活跃的网络端口

$ sudo lsof -a -u <用户名> -I

12、查找包含 flask 关键字的进程的资源使用

$ sudo lsof -p $(pgrep -f flask)

13、通过 ps 找到进程 PID,再用 lsof 查看详细信息

$ sudo lsof -p $(pgrep -f <进程名或命令片段>)

14、查看占用 80 端口的进程的所有文件

$ sudo lsof -p $(sudo lsof -t -i :80)

15、直接终止占用某个文件或端口的进程

$ sudo kill $(sudo lsof -t <文件路径或端口>)

终止占用 8000 端口的进程

$ sudo kill $(sudo lsof -t -i :8000)

终止占用 /var/log/syslog 的进程

$ sudo kill $(sudo lsof -t /var/log/syslog)

16、查找最近修改的文件(结合 find)

列出 /path 下最近 5 分钟修改过且被打开的文件

$ find /path -mmin -5 | xargs lsof

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表