每天一条神级Linux命令:升职加薪第一步

系统 Linux
lsof(list open files)是一个列出当前系统打开文件的工具,它可以列出某个进程打开的文件,或某个用户打开的文件,甚至是系统上打开的所有文件。

lsof(list open files)是一个列出当前系统打开文件的工具,它可以列出某个进程打开的文件,或某个用户打开的文件,甚至是系统上打开的所有文件。

lsof命令提供了非常全面的文件检视功能,它既可以查看普通文件,也可以查看目录、网络连接、管道等,大大方便了日常管理和诊断工作。

一、lsof命令的起源

lsof命令最初是在UNIX System V环境下由Purdue大学团队开发,后来Sun将其移植到Solaris上,成为系统内建工具。

目前所有主流Linux发行版包括Red Hat、Debian等都内置了lsof命令。Apple也在其macOS系统中集成了lsof。

lsof随着时间成长为一个功能强大且不可或缺的日常管理工具。

二、lsof命令的功能作用

lsof命令的主要用途有:

1、查看进程打开的文件,可用于查看程序访问情况。

2、查看网络连接信息,如打开的端口。

3、快速查看目录下被打开的文件。

4、与其他命令组合定位程序问题。

5、查看用户打开的文件信息。

6、查看伪设备、管道等打开的文件情况。

所以lsof是管理员排查问题的“瑞士军刀”。

三、lsof命令的应用场景

lsof适用于许多场景:

1、查看进程打开的端口,确认网络程序运行情况。

2、查看目录被占用情况,快速定位故障。

3、查找打开特定文件的进程,分析程序访问文件情况。

4、与strace合用追踪程序访问系统调用。

5、查找大量打开文件的程序,分析资源占用情况。

6、查看被删除文件是否还在被进程持有。

四、lsof命令语法格式

lsof基本语法格式为:

lsof [选项] [文件名或目录名]

常用选项包括:

-a :逻辑与列出多项

lsof -a -u user1 -c nginx

-c :列出指定命令的文件

lsof -c nginx

-p :列出指定pid的文件

lsof -p 1234

-u :列出指定用户名的文件

lsof -u user1

五、lsof各项参数使用详解

-a:或操作,显示多个选项的结果

lsof -a -u user1 -i :80

-c:查看执行指定命令的进程所打开的文件

lsof -c nginx

-d:查看某个目录被进程占用情况

lsof -d /home/user1

-i:查看打开的网络连接

lsof -i :80

+d+D:递归查看目录内容

lsof +D /usr/bin

-p:查看指定pid进程打开的文件

lsof -p 1234

-t:仅显示pid号

lsof -t -c nginx

-u:查看某用户打开的文件信息

lsof -u user1

六、lsof命令使用示例

1、查看80端口的网络连接

lsof -i :80

2、查看nginx进程打开的文件

lsof -c nginx

3、查看目录被打开情况

lsof -d /home

4、查看/usr目录被占用文件

lsof +D /usr

5、查看指定进程及用户打开的文件

lsof -p 1234 -u root

七、lsof命令技巧总结

1、结合grep或者awk可以进行过滤和处理

lsof -i | grep nginx

2、设置alias,创建快捷方式

alias lopen='lsof -c'

3、查看文件链接数,定位被删除文件

lsof -p 1234 | grep deleted

4、统计不同用户或程序打开的文件数

lsof -u user1 | wc -l

5、与strace结合定位程序问题

strace -p 1234 & lsof -p 1234

八、lsof命令常见问题解析

1、lsof默认只能查看当前用户打开的文件,要查看其他用户打开的文件需要root权限。

2、lsof显示的用户名如果是数字,说明它显示的是用户的uid而不是用户名。可以通过id命令查uid和用户名的对应。

3、某些情况下lsof统计的打开文件数太多,可以用-n参数限制显示的结果数。

4、lsof查看文件或目录时如果找不到,很可能是提供的路径不正确,应检查路径是否写正确。

责任编辑:华轩 来源: 运维book思议
相关推荐

2021-01-15 18:17:06

网络协议分层

2009-01-18 08:49:04

Java入门JDK

2013-01-15 09:17:11

2012-07-11 16:43:14

飞视美

2015-06-02 11:42:00

Cloud FoundAzure

2018-02-10 11:24:39

Python数据程序

2021-08-24 05:07:25

React

2019-11-20 10:54:46

无密码身份验证网络安全

2020-11-17 14:55:36

亚马逊云科技迁移

2011-07-25 14:17:46

BSMIT运维北塔

2010-07-01 13:44:12

2020-07-22 22:10:34

互联网物联网IOT

2012-08-30 11:14:11

云计算虚拟化

2010-01-21 10:29:54

java认证

2015-10-14 10:45:04

linux命令less

2009-06-16 16:31:08

绿色IT数据中心游龙科技

2011-08-31 09:38:36

网络营销MSN社交网络

2021-09-30 16:05:04

显卡虚拟货币芯片

2017-09-19 09:36:55

思科服务

2010-11-05 10:32:50

云应用程序规划
点赞
收藏

51CTO技术栈公众号