• lsof


    lsof(list open files)是一个列出当前系统打开文件的工具。

    在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。

    所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。

    因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

    lsof 命令可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。


    a,列出所有正在使用文件

    [root@localhost zhangy]# lsof 
    
    

    b,找出谁在使用某个文件

    [root@localhost zhangy]# lsof /usr/sbin/httpd
    COMMAND  PID   USER  FD   TYPE DEVICE   SIZE    NODE NAME
    httpd   3738   root txt    REG    8,6 319380 2697479 /usr/sbin/httpd
    httpd   3793 zhangy txt    REG    8,6 319380 2697479 /usr/sbin/httpd
    httpd   3794 zhangy txt    REG    8,6 319380 2697479 /usr/sbin/httpd
    httpd   3795 zhangy txt    REG    8,6 319380 2697479 /usr/sbin/httpd
    
    

    c,递归查找某个目录中所有打开的文件

    [root@localhost zhangy]# lsof +D /usr/local
    COMMAND    PID   USER  FD   TYPE DEVICE    SIZE    NODE NAME
    ruby      3754   root txt    REG    8,6 5985821 3151658 /usr/local/ruby/bin/ruby
    ruby      3754   root mem    REG    8,6   10513 3177073 /usr/local/ruby/lib/ruby/1.9.1/i686-linux/enc/encdb.so
    ruby      3754   root mem    REG    8,6    7960 3177560 /usr/local/ruby/lib/ruby/1.9.1/i686-linux/fcntl.so
    
    

    d,列出某个用户打开的所有文件

    [root@localhost zhangy]# lsof -u zhangy |more     #单个用户
    COMMAND  PID   USER   FD   TYPE DEVICE    SIZE    NODE NAME
    httpd   3793 zhangy  cwd    DIR    8,6    4096       2 /
    httpd   3793 zhangy  rtd    DIR    8,6    4096       2 /
    httpd   3793 zhangy  txt    REG    8,6  319380 2697479 /usr/sbin/httpd
    httpd   3793 zhangy  mem    REG    8,6  162724 2699347 /usr/lib/libapr-1.so.0.2.7
    httpd   3793 zhangy  mem    REG    8,6  245376 2881960 /lib/libsepol.so.1
    httpd   3793 zhangy  mem    REG    8,6  293308 2882226 /lib/libssl.so.0.9.8e
    
    [root@localhost zhangy]# lsof -u zhangy,root    #多个用户
    
    

    e,查找某个程序打开的所有文件

    [root@localhost zhangy]# lsof -c httpd
    
    

    f,列出除root用户外的所有用户打开的文件

    [root@localhost zhangy]# lsof -u ^root
    
    

    g,列出所有由某个PID对应的进程打开的文件

    [root@localhost zhangy]# lsof -p 3738
    
    

    h,列出所有网络连接

    [root@localhost zhangy]# lsof -i
    
    

    i,列出所有TCP网络连接

    [root@localhost zhangy]# lsof -i tcp
    
    

    j,找到使用某个端口的进程

    [root@localhost zhangy]# lsof -i:80         #查看一下80端口的进程
    COMMAND  PID   USER   FD   TYPE DEVICE SIZE NODE NAME
    httpd   3738   root    3u  IPv6  10791       TCP *:http (LISTEN)
    httpd   3793 zhangy    3u  IPv6  10791       TCP *:http (LISTEN)
    httpd   3794 zhangy    3u  IPv6  10791       TCP *:http (LISTEN)
    httpd   3795 zhangy    3u  IPv6  10791       TCP *:http (LISTEN)
    httpd   3796 zhangy    3u  IPv6  10791       TCP *:http (LISTEN)
    httpd   3797 zhangy    3u  IPv6  10791       TCP *:http (LISTEN)
    
    [root@localhost zhangy]# lsof -i udp:53     #查看 一下udp,53端口
    COMMAND  PID   USER   FD   TYPE DEVICE SIZE NODE NAME
    dnsmasq 3939 nobody    7u  IPv4  11321       UDP 192.168.122.1:domain 
    

    参考文章:http://linux.51yip.com/search/lsof

  • 相关阅读:
    接口的显示实现和隐式实现
    Math.Round和四舍五入
    经典SQL语句大全(转)
    简明添加log4net到项目中
    NAnt学习笔记(3) Properties, Loggers & Listeners
    (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
    Pyramid中如何配置多种URL匹配同一个View
    《IT项目管理》读书笔记(4) —— 项目范围管理
    C#语法糖
    枚举类型转换成字符串
  • 原文地址:https://www.cnblogs.com/weifeng1463/p/7095542.html
Copyright © 2020-2023  润新知