zoukankan      html  css  js  c++  java
  • lsof---列出当前系统打开的文件信息

    lsof---list open file,一个列出当前系统打开文件的工具

    1.lsof查找原理

    在Linux系统中,系统为了方便管理进程,会在/proc下为每一个运行中的进程创建一个目录,目录名就是进程号,而在进程的目录下有一个叫作fd的目录,这个目录下存放的是进程打开的所有文件。而lsof命令搜寻的其实就是/proc/$PID/fd下面的文件。

    [root@localhost ~]# lsof
    COMMAND    PID  TID    USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
    systemd      1         root  cwd       DIR              253,0      4096        128 /
    systemd      1         root  rtd       DIR              253,0      4096        128 /
    systemd      1         root  txt       REG              253,0   1214424     353923 /usr/lib/systemd/systemd
    systemd      1         root  mem       REG              253,0     61624   67175738 /usr/lib64/libnss_files-2.17.so
    systemd      1         root  mem       REG              253,0     90632   67211369 /usr/lib64/libz.so.1.2.7
    systemd      1         root  mem       REG              253,0     19888   67211548 /usr/lib64/libattr.so.1.1.0
    systemd      1         root  mem       REG              253,0    115848   67175725 /usr/lib64/libnsl-2.17.so
    systemd      1         root  mem       REG              253,0    153184   67176234 /usr/lib64/liblzma.so.5.0.99
    systemd      1         root  mem       REG              253,0    398264   67176278 /usr/lib64/libpcre.so.1.2.0
    ......
    
    # COMMAND:进程的名称,如果进程的名字很长,则这里只会显示前9个字符。
    # PID:进程标识符。如果执行命令时指定-R参数,则父进程标识符PPID也会显示出来。
    # USER:进程所有者。如果执行命令时指定-g参数,则进程所属组标识符PGID也会显示出来。
    # FD:一般是指文件描述符。
    # TYPE:文件类型,如DIR、REG等,常见的文件类型。
    ◇ DIR:表示目录。
    ◇ REG:表示普通文件。
    ◇ CHR:表示字符类型。
    ◇ BLK:块设备类型。
    ◇ UNIX:UNIX域套接字。
    ◇ FIFO:先进先出(FIFO)队列。
    ◇ IPv4/IPv6:网际协议(IP)套接字。
    # DEVICE:磁盘的名称。
    # SIZE:文件的大小。
    # NODE:索引节点(文件在磁盘上的标识)。
    # NAME:打开文件的确切名称。
    
    
    FD:两种文件描述符 desc
    第一类是文件描述符 0表示标准输入。
    1表示标准输出。
    2表示标准错误输出。
    n表示其他文件描述符的数值
    第二类的描述文件特征的标识 cwd:应用程序的当前工作目录,也是该应用程序启动的目录。
    txt:该类型文件是程序代码或数据。
    mem:内存映射文件。
    pd:父目录。
    rtd:根目录。
    DEL:表示文件已经被进程删除但还在内存中存在。

    2.查看谁正在使用某个文件

    lsof   /filepath/file
    

    3:查看端口被谁占用

    lsof -i:port
    lsof -i udp:55
    

    4.列出某个程序打开的文件信息

    lsof -c sshd
    

    5.通过某个进程号显示该进行打开的文件

    lsof -p 1
    

    6.列出所有tcp 网络连接信息

    lsof  -i tcp
    

    7.列出某个用户打开的文件信息

    lsof  -u username
    
  • 相关阅读:
    iPhone开发教程之retain/copy/assign/setter/getter
    关于block使用的5点注意事项
    Block的引用循环问题 (ARC & non-ARC)
    浅谈iOS中MVVM的架构设计与团队协作
    JS学习笔记(不断更新)
    神经网络介绍
    JAVA WEB WITH IDEA
    百度地图标注多个点
    脑筋急转弯——Google 面试
    决策树分类器
  • 原文地址:https://www.cnblogs.com/zhoujun007/p/11838815.html
Copyright © 2011-2022 走看看