linux lsof
lsof
1.1 lsof
lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。
2.1 选项
#lsof 打开所有文件
lsof
#查看谁正在使用某个文件
lsof /tmp/aa
#递归查看某个目录的文件信息,对应目录下的文件夹和子文件都会被列出
lsof +D /dir/dir/
#查看某个用户打开的文件信息
lsof -u admin
#列出某个程序打开的文件
lsof -c mysql
lsof -c mysql -c nginx #列出多个程序
#列出某个用户外被打开的文件
lsof -u ^root
#列出某个用户下某个程序打开的文件
lsof -u admin -c mysql
#通过某个进程号打开这个进程占用的文件
lsof -p 1
#列出多个进程号占用的文件
lsof -p 122,123,121
#列出所有的网络链接
lsof -i
#列出所有的tcp网络链接
lsof -i tcp
#列出所有的udp网路链接
lsof -i udp
#列出谁在使用某个端口
lsof -i :3306
#列出谁在使用某个特定的udp端口
lsof -i udp:55
#列出某个用户所有活动的网络端口
lsof -a -u admin -i
#列出所有的网络文件
lsof -N
#域名socket文件
lsof -u
#列出某个用户组打开的文件信息
lsof -g 5553
#根据文件描述列出对应的文件信息
lsof -d description(like 2)
#根据文件描述范围列出文件信息
lsof -d 2-3
3.1 信息详情
3.1.1 各列信息
- COMMAND:进程的名称
- PID:进程标识符
- PPID:父进程标识符(需要指定-R参数)
- USER:进程所有者
- PGID:进程所属组
- FD:文件描述符,应用程序通过文件描述符识别该文件。
- DEVICE:指定磁盘的名称
- SIZE:文件的大小
- NODE:索引节点(文件在磁盘上的标识)
- NAME:打开文件的确切名称
3.1.2 FD文件描述符列表
- cwd:表示current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改
- txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序
- lnn:library references (AIX)(库引用);
- er:FD information error (see NAME column)(fd信息错误);
- jld:jail directory (FreeBSD)(监控目录);
- ltx:shared library text (code and data)(共享库文本);
- mxx :hex memory-mapped type number xx(十六进制内存映射类型号xx);
- m86:DOS Merge mapped file(DOS合并映射文件);
- mem:memory-mapped file(内存映射文件);
- mmap:memory-mapped device(内存映射设备);
- pd:parent directory(父目录);
- rtd:root directory(跟目录);
- tr:kernel trace file (OpenBSD)(内核跟踪文件);
- v86 VP/ix mapped file(VP/IX映射文件);
- 0:表示标准输出
- 1:表示标准输入
- 2:表示标准错误
3.1.3 一般在标准输出、标准错误、标准输入后还跟着文件状态模式
- u:表示该文件被打开并处于读取/写入模式。
- r:表示该文件被打开并处于只读模式。
- w:表示该文件被打开并处于。
- 空格:表示该文件的状态模式为unknow,且没有锁定。
- -:表示该文件的状态模式为unknow,且被锁定。
3.1.4 同时在文件状态模式后面,还跟着相关的锁
- N:for a Solaris NFS lock of unknown type(对于未知类型的Solaris NFS锁);
- r:for read lock on part of the file(用于对文件的一部分进行读取锁定);
- R:for a read lock on the entire file(整个文件的读取锁定);
- w:for a write lock on part of the file;(文件的部分写锁)
- W:for a write lock on the entire file;(整个文件的写锁)
- u:for a read and write lock of any length(对于任意长度的读写锁);
- U:for a lock of unknown type(对于未知类型的锁);
- x:for an SCO OpenServer Xenix lock on part of the file(对于文件的sco openserver xenix锁);
- X:for an SCO OpenServer Xenix lock on the entire file(对于整个文件的sco openserver xenix锁);
- space:if there is no lock(如果没有锁).