大家好!我是Sean!

持续咱们的Linux零碎中的性能监控命令,明天要分享的是lsof。

lsof (list open files) (一个列出以后零碎关上文件的工具)

在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:过程标识符PPID:父过程标识符(须要指定-R参数)USER:过程所有者PGID:过程所属组FD:文件描述符,应用程序通过文件描述符辨认该文件DEVICE:指定磁盘的名称SIZE:文件的大小NODE:索引节点(文件在磁盘上的标识)NAME:关上文件的确切名称

FD列显示内容含意

1. cwd:示意current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录,除非它自身对这个目录进行更改2. txt:该类型的文件是程序代码,如应用程序二进制文件自身或共享库,如上列表中显示的 /sbin/init 程序3. lnn:library references (AIX);4. er:FD information error (see NAME column);5. jld:jail directory (FreeBSD);6. ltx:shared library text (code and data);7. mxx :hex memory-mapped type number xx.8. m86:DOS Merge mapped file;9. mem:memory-mapped file;10. mmap:memory-mapped device;11. pd:parent directory;12. rtd:root directory;13. tr:kernel trace file (OpenBSD);14. v86 VP/ix mapped file;15. 0:示意规范输入16. 1:示意规范输出17. 2:示意规范谬误
个别在规范输入、规范谬误、规范输出后还跟着文件状态模式:1. u:示意该文件被关上并处于读取/写入模式。2. r:示意该文件被关上并处于只读模式。3. w:示意该文件被关上并处于。4. 空格:示意该文件的状态模式为unknow,且没有锁定。5. -:示意该文件的状态模式为unknow,且被锁定。同时在文件状态模式前面,还跟着相干的锁:1. N:for a Solaris NFS lock of unknown type;2. r:for read lock on part of the file;3. R:for a read lock on the entire file;4. w:for a write lock on part of the file;(文件的局部写锁)5. W:for a write lock on the entire file;(整个文件的写锁)6. u:for a read and write lock of any length;7. U:for a lock of unknown type;8. x:for an SCO OpenServer Xenix lock on part of the file;9. X:for an SCO OpenServer Xenix lock on the entire file;10. space:if there is no lock.

TYPE列显示内容含意

1. DIR:示意目录。2. CHR:示意字符类型。3. BLK:块设施类型。4. UNIX: UNIX 域套接字。5. FIFO:先进先出 (FIFO) 队列。6. IPv4:网际协议 (IP) 套接字。7. REG:一般文件

常用命令

查看所有曾经关上的文件,不须要跟参数即可,不过输入的内容比拟多

lsof

查看哪些程序正在应用某个文件,跟上文件的全门路名称或相对路径名称

lsof   [全门路文件名/相对路径文件名]

循环递归的查看某个门路下所有文件正在被哪些程序应用,跟上目录即可

lsof +D [门路]

查看某个用户关上的文件信息,跟上用户名参数

lsof  -u [用户名]

查看某种程序关上的文件信息,跟上关键字,就会打印出以关键字结尾程序关上的文件

lsof -c [关键字]

列出多种程序关上的文件信息,跟上多个-c即可,和上条命令差不多

lsof -c [关键字A] -c [关键字B]


列出除了某个用户外的被关上的文件信息,^这个符号就是过滤掉root用户关上的过程

lsof -u ^root

显示某个过程号关上的文件信息

lsof -p [过程号]

列出多个过程号对应的文件信息

lsof -p [过程号1],[过程号2],[过程号3]

列出除了某个过程号,其余过程号所关上的文件信息

lsof -p ^[过程号]

查看所有的网络连接

lsof -i

查看所有tcp 网络连接信息

lsof  -i tcp

查看所有udp网络连接信息

lsof  -i udp

查看某个端口应用信息

lsof -i :22

查看某个特定的udp端口信息

lsof -i udp:42078

查看某个特定的tcp端口信息

lsof -i tcp:39498

思维导图总结

明天的分享就到这里啦!感激各位的浏览!码字不易,如果本文对你有帮忙的话,帮忙点个赞吧~哈哈。

性能监控命令系列完结后会将思维导图分享进去,欢送关注公众号“程序员Sean”。