lsof 命令语法与实例
lsof 命令简介
lsof 是 Linux 和 Unix 系统上一个非常有用的命令行工具,全称是“list open files”,意为“列出打开的文件”。在 Unix 和类 Unix 系统中,几乎所有事物都以文件的形式存在,包括普通的数据文件、目录、网络套接字、管道,甚至是硬件设备。因此,lsof 提供的信息不仅限于传统意义上的“文件”。
man在线官方手册: lsof
主要功能
识别进程打开的文件: lsof 可以显示哪些进程打开了哪些文件,这在诊断程序错误或系统挂起时特别有用。
网络和套接字文件: 通过 lsof,用户可以查看所有打开的网络连接和套接字,非常适用于网络监控和故障排除。
查找被删除的文件: 即便文件被删除,只要还有进程保持打开状态,lsof 依然可以找到它,这对于恢复丢失数据很有帮助。
安全监控: 管理员可以使用 lsof 监控可疑的网络活动和文件访问行为。
lsof打开的文件可以是:
普通文件:例如文档、图片、脚本等。
目录:在 Unix 和类 Unix 系统中,目录也被视作一种文件。
库文件:进程使用的动态链接库或共享库。
网络文件:表示网络套接字,例如 TCP/IP 套接字。
管道文件:用于进程间通信的管道。
设备文件:表示硬件设备,比如/dev/sda(硬盘驱动器)、/dev/tty(终端设备)等。
特殊文件:如符号链接。
语法与实例
lsof 命令的基本语法如下:
lsof [选项][文件]
lsof 命令的基本使用如下:
命令
描述
例子
lsof
列出系统上所有打开的文件
lsof
lsof -i
显示所有网络连接
lsof -i
lsof -u [用户名]
列出特定用户打开的文件
lsof -u root
lsof -c [进程名]
列出特定进程打开的文件
lsof -c sshd
lsof -p [PID]
列出特定进程ID打开的文件
lsof -p 123
lsof +D [目录]
列出在特定目录下打开的文件
lsof +D /usr
lsof -i :[端口]
列出打开特定端口的进程
lsof -i :22
lsof -i [协议]
显示特定协议(如TCP或UDP)的连接
lsof -i tcp
lsof -i [协议]@[主机]:[端口]
显示特定地址和端口上的连接
lsof -i tcp@localhost:80
lsof -d [文件描述符]
列出使用特定文件描述符的文件
lsof -d 2
lsof -t
仅列出进程ID
lsof -t -i
lsof -P
不将端口号转换为服务名
lsof -P
lsof -N
显示 NFS 文件
lsof -N
lsof -l
不将用户ID转换为用户名
lsof -l