内容一:lsof 命令的作用
显示当前系统正在打开的文件
内容二:lsof 命令的常用参数
1) a 代表前后 2 个参数都必须满足时才显示
2) -c 代表只显示指定的进程所打开的文件,后面接进程名
3) +d 代表只显示指定目录下被进程打开的文件,后面接目录名
4) +D 代表只显示指定目录下以及此目录下所有子目录下被进程打开的文件,后面接目录名
5) -g 代表只显示指定 GID 所属的进程,后面接 GID 号
6) -i 代表只显示所有符合条件的进程情况,也可以在后面接协议名称 tcp、udp 这样就只显示属于此协议的进程,或者接协议名称加端口号例如 tcp:<端口号>、udp:<端口号> 这样就只显示属于此类端口号的进程
7) -n 不显示主机名称
8) -p 代表只显示指定 <进程号> 所打开的文件
9) -r 代表指定显示的频率,单位为秒,后面接数字
10) -u 代表之显示指定用户所属的进程,后面接用户名
内容三:lsof 命令输出结果简介
3.1 lsof 命令输出结果
# lsof | more
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 251,1 4096 1 /
......
3.2 lsof 命令输出结果简介
1) COMMAND 进程名
2) PID (Process Id) PID 号
3) USER 用户
4) FD 文件描述信息
(补充:cwd 代表当前目录,txt 代表 txt 文件,rtd 代表 root 目录,mem 代表内存映射文件)
5) TYPE 文件类型
(补充:DIR 代表当前目录,REG 代表普通文件,CHR 代表字符,a_inode 代表 Inode 文件,FIFO 代表管道或者 socket文件,netlink 代表网络,unkonwn 代表未知)
6) DEVICE 设备 ID
7) SIZE/OFF 进程大小
8) NODE 文件的 Inode 号
9) NAME 路径或链接
内容四:lsof 使用案例
4.1 案例一:显示已经被删除的文件
# lsof | grep deleted
4.2 案例二:显示用户已打开的案例
4.2.1 显示某用户已打开的文件
# lsof -u zhumingyu mingyuzhu
(补充:这里以显示用户 zhumingyu 和 mingyuzhu 已打开的文件为例)
4.2.2 不显示某用户已打开的文件
# lsof -u mingyuzhu
(补充:这里以不显示用户 mingyuzhu 已打开的文件为例)
4.3 案例三:显示进程已打开的文件
4.3.1 显示某进程已打开的文件
# lsof -p 1024
(补充:这里以显示 PID 号是 1024 已打开的文件为例)
4.3.2 不显示某进程已打开的所有文件
# lsof -p ^1024
(补充:这里以不显示 PID 号是 1024 已打开的文件为例)
4.3.3 显示某几个进程已打开的文件
# lsof -p 1,2,3
(补充:这里以显示 PID 号是 1、2 和 3 已打开的文件为例)
4.4 案例四:显示已打开的网络文件
4.4.1 显示所有已打开的网络文件
# lsof -i
4.4.2 显示所有 IPv4 协议已打开的文件
# lsof -i 4
4.4.3 显示所有 IPv6 协议已打开的文件
# lsof -i 6
4.4.4 显示所有 TCP 协议已打开的文件
# lsof -i TCP
4.4.5 显示所有 TCP 协议已打开的文件
# lsof -i UDP
4.4.6 显示某个 TCP 端口或者 UDP 端口已打开的文件
# lsof -i:22
(补充:这里以显示 TCP 或者 UPD 的 22 端口已打开的文件为例)
4.4.7 显示某个 TCP 端口已打开的文件
# lsof -i TCP:22
(补充:这里以显示 TCP 的 22 端口已打开的文件为例)
4.4.8 显示某几个 TCP 端口打开的文件
# lsof -i TCP:1-1024
(补充:这里以显示 TCP 的 1 端口到 1024 端口打开的文件为例)