本网站相关文章:
Introduction
list open files – 一切皆文件. 通过文件不仅可以访问常规数据,而且可以访问网络连接和硬件设备,例如 TCP,UDP 信息. 一般使用 root 超级权限来进行操作,获取完全信息.
File object
- 普通文件–file
- 目录–directory
- 网络文件系统的文件
- 字符或设备文件
- (函数)共享库
- 管道,命名管道
- 符号链接
- 网络文件(例如:NFS file,网络 socket,unix 域名 socket)
- 还有其它类型的文件,等等
Output
输出
- COMMAND 进程的名称
- PID 进程标识符
- PPID 父进程标识符(需要指定-R 参数)
- USER 进程所有者
- PGID 进程所属组
- FD 文件描述符,应用程序通过文件描述符识别该文件.如 cwd,txt 等:
- TYPE 文件类型,如 DIR,REG 等,常见的文件类型
- DEVICE 指定磁盘的名称
- SIZE 文件的大小
- NODE 索引节点(文件在磁盘上的标识)
- NAME 打开文件的确切名称
FD
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| cwd:表示current work dirctory,这是该应用程序启动的目录 txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库 lnn:library references (AIX) er:FD information error (see NAME column) jld:jail directory (FreeBSD) ltx:shared library text (code and data) mxx :hex memory-mapped type number xx. m86:DOS Merge mapped file mem:memory-mapped file mmap:memory-mapped device pd:parent directory rtd:root directory tr:kernel trace file (OpenBSD) v86 VP/ix mapped file 文件描述符: 0/1/2/...,例如0r/1u,其中u表示读写模式
|
TYPE
- DIR:表示目录
- CHR:表示字符类型
- BLK:块设备类型
- UNIX: UNIX 域套接字
- FIFO:先进先出 (FIFO) 队列
- IPv4:网际协议 (IP) 套接字
Command Options
lsof [options] [names]
options
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| -a 列出打开文件存在的进程 -c <进程名> 列出指定进程所打开的文件 -g 列出GID号进程详情 -p <进程号> 列出指定进程号所打开的文件 -u 列出UID号进程详情
-d <文件号> 列出占用该文件号的进程 +d <目录> 列出目录下被打开的文件 +D <目录> 递归列出目录下被打开的文件 -n <目录> 列出使用NFS的文件
-i <条件> 列出符合条件的进程,条件非常重要
+|-r <t> repeat every t seconds
-h 显示帮助信息 -v 显示版本信息
|
condition
格式:lsof -i[46] [protocol][@hostname|hostaddr][:service[,servcie2]|port[, port2]]
其中各项:
1 2 3 4 5 6
| 46 ipv4, ipv6 protocol TCP或者UDP hostname 域名 hostaddr ip service /etc/serice中的service,可以有多个 port 端口号
|
Example
某一个用户
1 2 3 4 5 6 7
| sudo lsof | wc -l
lsof | wc -l
lsof -u user1 lsof -u user2 <exec_file>
|
某一个进程
1 2 3 4 5 6 7 8 9 10 11 12 13
| lsof -p <PID>
lsof <file>
lsof -c <proc_name> lsof -c mysql
lsof -i 4 -a -p <pid1>
|
网络连接
1 2 3 4 5 6 7 8 9 10
| lsof -i lsof -i tcp lsof -i :3306
lsof -a -u user1 -i
lsof -i tcp
|
hostname
1 2
| lsof -i @bamboo:10,12,80 -r 3
|
port
1 2 3 4
| sudo lsof -nP -iTCP:端口号 -sTCP:LISTEN
lsof -i:port
|
Mac Example
Port
1 2 3 4
| sudo lsof -nP -iTCP:端口号 -sTCP:LISTEN
sudo lsof -nP -iTCP -sTCP:LISTEN
|
Process
1 2
| sudo lsof -nP -iTCP -sTCP:LISTEN | grep <pid>
|