Linux工具-lsof
参考文献
lsof
lsof
命令 用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP).找回/恢复删除的文件.是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root
用户执行.- 在
Linux
环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 (TCP
) 和用户数据报协议 (UDP
) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口.因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过sof
工具能够查看这个列表对系统监测以及排错将是很有帮助的.
基础用法
1 | lsof [选项] |
1 | -a:列出打开文件存在的进程; |
lsof
输出各列信息的意义
标识 | 说明 |
---|---|
COMMAND |
进程的名称 |
PID |
进程标识符 |
PPID |
父进程标识符(需要指定-R参数) |
USER |
进程所有者 |
PGID |
进程所属组 |
FD |
文件描述符,应用程序通过它识别该文件 |
文件描述符列表
标识 | 说明 |
---|---|
cwd |
表示当前工作目录,即:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改 |
txt |
该类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序 |
lnn |
库引用 (AIX); |
er |
FD 信息错误(参见名称栏) |
jld |
jail 目录 (FreeBSD); |
ltx |
共享库文本(代码和数据) |
mxx |
十六进制内存映射类型编号xx |
m86 |
DOS合并映射文件 |
mem |
内存映射文件 |
mmap |
内存映射设备 |
pd |
父目录 |
rtd |
根目录 |
tr |
内核跟踪文件 (OpenBSD) |
v86 |
VP/ix 映射文件 |
0 |
表示标准输出 |
1 |
表示标准输入 |
2 |
表示标准错误 |
- 一般在标准输出、标准错误、标准输入后还跟着文件状态模式:
标识 | 说明 |
---|---|
u |
表示该文件被打开并处于读取/写入模式 |
r |
表示该文件被打开并处于只读模式 |
w |
表示该文件被打开并处于写入模式 |
空格 |
表示该文件的状态模式为 unknow,且没有锁定 |
- |
表示该文件的状态模式为 unknow,且被锁定 |
- 同时在文件状态模式后面,还跟着相关的锁:
标识 | 说明 |
---|---|
N |
对于未知类型的Solaris NFS锁 |
r |
用于部分文件的读取锁定 |
R |
对整个文件进行读取锁定 |
w |
对文件的一部分进行写锁定(文件的部分写锁) |
W |
对整个文件进行写锁定(整个文件的写锁) |
u |
用于任何长度的读写锁 |
U |
对于未知类型的锁 |
x |
对于文件部分的SCO OpenServer Xenix锁 |
X |
对于整个文件的SCO OpenServer Xenix锁 |
space |
如果没有锁 |
文件类型
标识 | 说明 |
---|---|
DIR |
表示目录 |
CHR |
表示字符类型 |
BLK |
块设备类型 |
UNIX |
UNIX 域套接字 |
FIFO |
先进先出 (FIFO) 队列 |
IPv4 |
网际协议 (IP) 套接字 |
DEVICE |
指定磁盘的名称 |
SIZE |
文件的大小 |
NODE |
索引节点(文件在磁盘上的标识) |
NAME |
打开文件的确切名称 |
REG |
常规文件 |
示例
进程相关
-
查找某个文件相关的进程
1
2
3
4lsof /bin/bash
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 3043939 xxx txt REG 252,1 1183448 655541 /usr/bin/bash
bash 3061467 xxxx txt REG 252,1 1183448 655541 /usr/bin/bash -
列出某个用户打开的文件信息
1
lsof -u username
-
列出某个进程所打开的文件信息
1
lsof -c docker
-
列出某个用户以及某个进程所打开的文件信息
1
lsof -u test -c docker
-
通过某个进程号显示该进程打开的文件
1
lsof -p $PID
-
根据文件描述列出对应的文件信息
1
lsof -d 3 | grep PARSER1
- 说明: 0表示标准输入,1表示标准输出,2表示标准错误,从而可知:所以大多数应用程序所打开的文件的 FD 都是从 3 开始
-
查看正在使用某个目录的进程
1
lsof +D /path/to/directory
-
显示归属gid的进程情况
1
lsof -g gid
网络相关
-
实时查看本机网络服务的活动状态
1
lsof -i
-
列出所有tcp 网络连接信息
1
lsof -i tcp
-
列出谁在使用某个端口
1
lsof -i :8080
-
列出某个用户的所有活跃的网络端口
1
lsof -a -u test -i
-
获取端口对应的进程
ID=>PID
1
2
3# lsof -i :8090 -P -t -sTCP:LISTEN
6999
7006
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HoleLin's Blog!