Lsof命令及用法

lsof [options] filename

如果提示没有安装lsof这个命令,CentOS可以执行:yum install lsof 安装,Debian可以执行:apt-get install lsof 安装。

lsof  filename 显示打开指定文件的所有进程
lsof -a 表示两个参数都必须满足时才显示结果
lsof -c string   显示COMMAND列中包含指定字符的进程所有打开的文件

lsof -p 进程号         查看该进程打开了哪些文件
lsof -u username  显示所属user进程打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /DIR/ 显示目录下被进程打开的文件
lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长
lsof -d FD 显示指定文件描述符的进程
lsof -n 不将IP转换为hostname,缺省是不加上-n参数
lsof -i 用以显示符合条件的进程情况
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
46 –> IPv4 or IPv6
protocol –> TCP or UDP
hostname –> Internet host name
hostaddr –> IPv4地址
service –> /etc/service中的 service name (可以不只一个)
port –> 端口号 (可以不只一个)

例如: 查看22端口现在运行的情况
[root@ymhsky ~]# lsof -i :22
COMMAND   PID USER   FD   TYPE DEVICE SIZE NODE NAME
sshd     1052 root    3u  IPv6   2547       TCP *:ssh (LISTEN)
sshd    18884 root    3u  IPv6 509471       TCP ymhsky:ssh->116.22.255.162:64630 (ESTABLISHED)

 

每行显示一个打开的文件,若不指定条件默认将显示所有进程打开的所有文件。lsof输出各列信息的意义如下:

COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

查看端口占用情况,只是他的其中一个功能,lsof 的功能还有很多,日后有时间,再为大家介绍一下,当然,大家也可以自己去查找一下。

 

1.列出所有打开的文件:
lsof
备注: 如果不加任何参数,就会打开所有被打开的文件,建议加上一下参数来具体定位
2. 查看谁正在使用某个文件
lsof /filepath/file
3.递归查看某个目录的文件信息
lsof +D /filepath/filepath2/
备注: 使用了+D,对应目录下的所有子目录和文件都会被列出
4. 比使用+D选项,遍历查看某个目录的所有文件信息的方法
lsof | grep ‘/filepath/filepath2/’
5. 列出某个用户打开的文件信息
lsof -u username
备注: -u 选项,u其实是user的缩写
6. 列出某个程序所打开的文件信息
lsof -c mysql
备注: -c 选项将会列出所有以mysql开头的程序的文件,其实你也可以写成 lsof | grep mysql, 但是第一种方法明显比第二种方法要少打几个字符了
7. 列出多个程序多打开的文件信息
lsof -c mysql -c apache
8. 列出某个用户以及某个程序所打开的文件信息
lsof -u test -c mysql
9. 列出除了某个用户外的被打开的文件信息
lsof -u ^root
备注:^这个符号在用户名之前,将会把是root用户打开的进程不让显示
10. 通过某个进程号显示该进行打开的文件
lsof -p 1
11. 列出多个进程号对应的文件信息
lsof -p 123,456,789
12. 列出除了某个进程号,其他进程号所打开的文件信息
lsof -p ^1
13 . 列出所有的网络连接
lsof -i
14. 列出所有tcp 网络连接信息
lsof -i tcp
15. 列出所有udp网络连接信息
lsof -i udp
16. 列出谁在使用某个端口
lsof -i :3306
17. 列出谁在使用某个特定的udp端口
lsof -i udp:55
特定的tcp端口
lsof -i tcp:80
18. 列出某个用户的所有活跃的网络端口
lsof -a -u test -i
19. 列出所有网络文件系统
lsof -N
20.域名socket文件
lsof -u
21.某个用户组所打开的文件信息
lsof -g 5555
22. 根据文件描述列出对应的文件信息
lsof -d description(like 2)
23. 根据文件描述范围列出文件信息
lsof -d 2-3

<think>好的,用户想查找lsof命令的使用方法和示例。首先,我需要回忆一下lsof的基本功能和常见用途。lsof全称是List Open Files,主要用于列出系统中被打开的文件和相关进程信息。这在排查文件占用、网络连接等问题时非常有用。 接下来,我需要整理用户可能需要的几个方面:基本语法、常用参数、实际应用示例。用户可能对基础用法感兴趣,比如如何查看某个进程打开的文件,或者反过来,查看某个文件被哪些进程使用。此外,网络相关的查询也是常见的需求,比如查看特定端口的使用情况。 然后,要确保提供的示例准确且覆盖典型场景。例如,使用`lsof -p PID`查看指定进程的文件,`lsof /path/to/file`查看文件被哪个进程占用。网络部分可能需要包括TCP/UDP端口、监听状态的查询。同时,用户可能也需要了解如何组合使用其他命令,比如结合grep过滤结果,或者使用kill命令终止进程。 还要注意系统之间的差异,虽然lsof在Unix/Linux中广泛使用,但某些选项可能在不同的发行版中略有不同。因此,提醒用户查看手册页是个好习惯,特别是遇到问题时。 用户提供的引用内容中提到了系统变量和sed命令,不过这些和lsof关系不大,可能只是引用格式的例子。但需要注意正确引用来源,如果有相关的内容需要标注的话。 最后,生成相关问题需要考虑用户可能的后续疑问,比如如何安装lsof,高级用法如恢复删除的文件,或者与其他命令如netstat的比较。这些问题能帮助用户进一步深入学习和解决问题。</think># Lsof命令使用详解 ## 一、基本语法 `lsof`命令的基础格式为: ```bash lsof [选项] [文件名/目录/进程等] ``` ## 二、核心功能场景 ### 1. 查看文件占用 - 查看指定文件被哪个进程占用: ```bash lsof /var/log/syslog ``` - 查看目录使用情况(显示目录下所有被打开的文件): ```bash lsof +D /usr/local/ ``` ### 2. 进程关联文件 - 显示指定PID进程打开的所有文件: ```bash lsof -p 1234 ``` - 显示指定用户打开的文件: ```bash lsof -u username ``` ### 3. 网络连接分析 - 查看所有TCP连接: ```bash lsof -i TCP ``` - 查看指定端口的进程: ```bash lsof -i :80 ``` - 查看UDP端口使用: ```bash lsof -i UDP:53 ``` - 查看监听状态的端口: ```bash lsof -i -s TCP:LISTEN ``` ### 4. 特殊场景应用 - 恢复已删除但被进程占用的文件: ```bash lsof | grep deleted # 找到对应进程 ls -l /proc/pid/fd/ # 查看文件描述符 ``` ## 三、实用组合命令 1. 查找占用swap空间的进程: ```bash lsof -S | grep swap ``` 2. 查看指定程序类型的网络连接: ```bash lsof -i -a -c sshd ``` 3. 定时监控文件变化: ```bash watch -n 5 "lsof /tmp/important_file" ``` ## 四、输出字段解析 典型输出包含以下关键列: ``` COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ``` - **FD列**:文件描述符数字后接访问模式(r=读,w=写,u=读写) - **TYPE列**:文件类型(REG=常规文件,DIR=目录,IPv4=网络连接) ## 五、安装与手册 1. 安装方法: ```bash # Debian/Ubuntu sudo apt install lsof # RHEL/CentOS sudo yum install lsof ``` 2. 查看完整手册: ```bash man lsof ``` [^1]: 关于文件描述符的详细说明可参考Linux手册页 [^2]: 网络连接状态定义详见TCP/IP协议规范
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值