博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lsof命令简介
阅读量:5840 次
发布时间:2019-06-18

本文共 3659 字,大约阅读时间需要 12 分钟。

lsof 简介

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境中一切皆文件,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

lsof 命令解析

COMMAND    PID  TID    USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAMEsystemd      1         root  cwd       DIR              253,0       224         64 /systemd      1         root  rtd       DIR              253,0       224         64 /systemd      1         root  txt       REG              253,0   1482128   67418805 /usr/lib/systemd/systemdsystemd      1         root  mem       REG              253,0     20040   33619254 /usr/lib64/libuuid.so.1.3.0...

lsof 输出各列信息的意义如下:

  • COMMAND: 进程的名称
  • PID: 进程标识符
  • USER: 进程所有者
  • FD: 文件描述符,应用程序通过文件描述符识别该文件。每个进程都有自己的文件描述符表,因此FD可能会重名
  • TYPE: 文件类型
  • DEVICE: 指定磁盘的名称
  • SIZE: 文件的大小
  • NODE: 索引节点(文件在磁盘上的标识)
  • NAME: 打开文件的确切名称

查看进程打开文件

  • 列出占用文件的进程
$ sudo lsof /home/mysql/COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF   NODE NAMEbash    18522 mysql  cwd    DIR  253,0     4096 655378 /home/mysqlsudo    18544  root  cwd    DIR  253,0     4096 655378 /home/mysqllsof    18545  root  cwd    DIR  253,0     4096 655378 /home/mysqllsof    18546  root  cwd    DIR  253,0     4096 655378 /home/mysql

可配合 +d 选项,表示/home/mysql目录及目录下的文件,不包括子目录

$ sudo lsof /home/mysql/ +d
  • 列出pid打开的文件

-p选项,列出指定pid打开的文件,如果要多个,则用逗号隔开

$ sudo lsof -p 16273COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAMEnano    16273 root  cwd    DIR  253,0     4096 1179649 /root
  • 列出指定用户打开的文件

-u选项,列出指定用户打开的文件

$ sudo lsof -u test1COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF    NODE NAMEbash    16335 test1  cwd    DIR  253,0     4096 1966556 /home/test1
  • 列出指定进程名打开的文件

-c 选项,列出指定进程名打开的文件

sudo lsof -c java   # 显示command列中以java的所有打开的文件sudo lsof -c java -c sh  # 显示command列中以java开头或以sh开头的打开的文件sudo lsof -c ^java   # 显示command列中所有不以java开头的打开的文件

查看网络连接情况

-i 选项,可以列出网络连接情况。语法格式如下:

lsof -i[46] [protocol] [@hostname|hostaddr] [:service|prot]参数解析:4/6:IPv4或IPv6protocol:TCP或UDPhostname:主机名hostaddr:ip地址service:/etc/service中服务名,可写多个port:端口号,可写多个

示例:

1. 查看IPv4网络情况

$ lsof -i 4COMMAND     PID      USER   FD   TYPE DEVICE SIZE/OFF NODE NAMErpcbind    1599       rpc    6u  IPv4  10168      0t0  UDP *:sunrpc rpcbind    1599       rpc    7u  IPv4  10169      0t0  UDP *:926 ...

2. 查看指定IP

-n 表示不进行IP域名反查,直接显示ip地址

$ lsof -i @10.0.137.144 -nCOMMAND   PID      USER   FD   TYPE   DEVICE SIZE/OFF NODE NAMEsshd    16734      root    3u  IPv4 14692046      0t0  TCP 10.0.137.144:ssh->10.0.2.136:49614 (ESTABLISHED)sshd    16736      test    3u  IPv4 14692046      0t0  TCP 10.0.137.144:ssh->10.0.2.136:49614 (ESTABLISHED)

3. 查看指定IP及端口

$ sudo lsof -i @10.0.137.144:22 -nCOMMAND   PID      USER   FD   TYPE   DEVICE SIZE/OFF NODE NAMEsshd    16734      root    3u  IPv4 14692046      0t0  TCP 10.0.137.144:ssh->10.0.2.136:49614 (ESTABLISHED)sshd    16736      test    3u  IPv4 14692046      0t0  TCP 10.0.137.144:ssh->10.0.2.136:49614 (ESTABLISHED)

4. 查看指定端口

$ lsof -i :22 -nCOMMAND   PID      USER   FD   TYPE   DEVICE SIZE/OFF NODE NAMEsshd     1095      root    3u  IPv4    14032      0t0  TCP *:ssh (LISTEN)sshd     1095      root    4u  IPv6    14034      0t0  TCP *:ssh (LISTEN)sshd    16734      root    3u  IPv4 14692046      0t0  TCP 10.0.137.144:ssh->10.0.2.136:49614 (ESTABLISHED)sshd    16736      test    3u  IPv4 14692046      0t0  TCP 10.0.137.144:ssh->10.0.2.136:49614 (ESTABLISHED)

5. 查看指定协议

$ sudo lsof -i UDPCOMMAND    PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAMErsyslogd 17935 root    3u  IPv4 11066422      0t0  UDP *:40296

转载于:https://www.cnblogs.com/technologylife/p/9211289.html

你可能感兴趣的文章
ActiveMQ应用笔记一:基本概念&安装
查看>>
大话数据结构之四(串)
查看>>
加热炉简是新来的整个系统的板
查看>>
Mockito使用注意事项
查看>>
[LeetCode] Palindrome Linked List 回文链表
查看>>
UVA - 825Walking on the Safe Side(dp)
查看>>
android大概是通过logcat拦截Log
查看>>
关于codeMirror插件使用的一个坑
查看>>
评论:人才流失强力折射出现实畸形人才观
查看>>
git服务器gitlab之搭建和使用--灰常好的git服务器【转】
查看>>
基于机器学习的web异常检测——基于HMM的状态序列建模,将原始数据转化为状态机表示,然后求解概率判断异常与否...
查看>>
分享一种需求评审的方案
查看>>
虚拟运营商10月或大面积放号 哭穷背后仍有赢家
查看>>
Server2016开发环境配置
查看>>
分布式光伏发电建设中的逆变器及其选型
查看>>
增强网络安全防御 推动物联网走向应用
查看>>
UML中关联,组合与聚合等关系的辨析
查看>>
《大数据管理概论》一3.2 大数据存储与管理方法
查看>>
PowerBuilder开发简单计算器
查看>>
怎样使用linux的iptables工具进行网络共享
查看>>