显示当前在Linux系统lsof -p pid
上打开的所有文件的列表.
lsof命令用于查看进程打开的文件,打开文件的进程以及进程打开的端口(TCP,UDP). 检索/还原已删除的文件. 这是一个非常方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,因此需要由root用户执行.
在linux环境下,所有内容都以文件形式存在. 通过该文件,您不仅可以访问常规数据,还可以访问网络连接和硬件. 因此,例如传输控制协议(TCP)和用户数据报协议(UDP)套接字,系统在后台为应用程序分配文件描述符,无论文件的性质如何,文件描述符都是应用程序与底层操作系统提供了公共接口. 由于应用程序打开文件的描述符列表提供了许多有关应用程序本身的信息,因此能够通过lsof工具查看此列表对于系统监视和故障排除很有帮助.
lsof(选项)
-a:列出打开文件存在的进程;
-c:列出指定进程所打开的文件;
-g:列出GID号进程详情;
-d:列出占用该文件号的进程;
+d:列出目录下被打开的文件;
+D:递归列出目录下被打开的文件;
-n:列出使用NFS的文件;
-i:列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p:列出指定进程号所打开的文件;
-u:列出UID号进程详情;
-h:显示帮助信息;
-v:显示版本信息。
lsof
command PID USER FD type DEVICE SIZE NODE NAME
init 1 root cwd DIR 8,2 4096 2 /
init 1 root rtd DIR 8,2 4096 2 /
init 1 root txt REG 8,2 43496 6121706 /sbin/init
init 1 root mem REG 8,2 143600 7823908 /lib64/ld-2.5.so
init 1 root mem REG 8,2 1722304 7823915 /lib64/libc-2.5.so
init 1 root mem REG 8,2 23360 7823919 /lib64/libdl-2.5.so
init 1 root mem REG 8,2 95464 7824116 /lib64/libselinux.so.1
init 1 root mem REG 8,2 247496 7823947 /lib64/libsepol.so.1
init 1 root 10u FIFO 0,17 1233 /dev/initctl
migration 2 root cwd DIR 8,2 4096 2 /
migration 2 root rtd DIR 8,2 4096 2 /
migration 2 root txt unknown /proc/2/exe
ksoftirqd 3 root cwd DIR 8,2 4096 2 /
ksoftirqd 3 root rtd DIR 8,2 4096 2 /
ksoftirqd 3 root txt unknown /proc/3/exe
migration 4 root cwd DIR 8,2 4096 2 /
migration 4 root rtd DIR 8,2 4096 2 /
migration 4 root txt unknown /proc/4/exe
ksoftirqd 5 root cwd DIR 8,2 4096 2 /
ksoftirqd 5 root rtd DIR 8,2 4096 2 /
ksoftirqd 5 root txt unknown /proc/5/exe
events/0 6 root cwd DIR 8,2 4096 2 /
events/0 6 root rtd DIR 8,2 4096 2 /
events/0 6 root txt unknown /proc/6/exe
events/1 7 root cwd DIR 8,2 4096 2 /
lsof输出每列信息的含义如下:
文件描述符列表:
cwd: 表示当前工作目录,即: 应用程序的当前工作目录,即应用程序启动的目录,除非它更改目录本身. txt: 这种类型的文件是程序代码,例如应用程序二进制文件文件本身或共享库,如上面列表中的/ sbin / init程序所示. er: FD信息错误(请参阅NAME列); jld: 监狱目录(FreeBSD); ltx: 共享库文本(代码和数据); mxx: 十六进制内存映射类型编号xx.m86: DOS合并映射文件; mem: 内存映射文件; mmap: 内存映射设备; pd: 父目录; rtd: 根目录; tr: 内核跟踪文件(OpenBSD); v86 VP / ix映射文件; 0: 标准输出1: 标准输入2: 标准错误
在标准输出,标准错误和标准输入之后linux打开文件,通常遵循文件状态模式:
u: 表示文件已打开并处于读/写模式. r: 表示文件已打开并且处于只读模式. w: 表示文件已打开并在其中. 空格: 表示文件的状态模式为未知,并且未锁定. -: 表示文件的状态模式为未知状态并已锁定.
同时linux打开文件,在文件状态模式后面,还存在相关的锁:
N: 用于未知类型的Solaris NFS锁; r: 用于部分文件的读取锁定; R: 对整个文件进行读取锁定; w: 对文件的一部分进行写锁定; (文件写锁定的一部分)W: 对整个文件的写锁定; (U: 用于任何长度的读写锁; U: 用于未知类型的锁; x: 用于文件部分上的SCO OpenServer Xenix锁; X: 用于整个文件上的SCO OpenServer Xenix锁;空格: 如果没有锁.
文件类型:
DIR: 指示目录. CHR: 字符类型. BLK: 块设备类型. UNIX: UNIX域套接字. FIFO: 先进先出(FIFO)队列. IPv4: Internet协议(IP)套接字. 设备: 指定磁盘名称SIZE: 文件大小NODE: 索引节点(磁盘上文件的标识)NAME: 打开文件的确切名称
列出通过指定进程ID打开的文件:
lsof -p $pid
获取与port => pid对应的进程ID
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-233301-1.html