lsof - list open files

lsof命令用于查看你进程打开的文件,进程打开的端口(TCP、UDP),找回/恢复删除的文件,打开文件的进程。

语法:

    lsof [选项] [文件]

常用选项:

  • -c <进程名> 列出指定进程所打开的文件
  • +D <目录> 递归列出目录下被打开的文件
  • -i <条件> 列出符号条件的进程(4、6、协议、:端口、@ip)
  • -n <目录> 列出使用NFS的文件
  • -p <进程号> 列出指定进程号所打开的文件
  • -u s 列出login name或UID为s的程序
 

实例

1. 在没有任何参数时,显示当前系统已经打开的正在使用的所有文件

[root@oldboy ~]# lsof|more -10
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 8,3 4096 2 /
init 1 root rtd DIR 8,3 4096 2 /
init 1 root txt REG 8,3 150352 139708 /sbin/init
init 1 root mem REG 8,3 65928 132072 /lib64/libnss_fil
es-2.12.so
init 1 root mem REG 8,3 1926480 155325 /lib64/libc-2.12.
so
init 1 root mem REG 8,3 93320 155348 /lib64/libgcc_s-4
.4.7-20120601.so.1
--More--

显示的内容分析:

1. 名称详解

  •  COMMAND:进程名称
  •  PID:进程标识符
  •  TID:线程ID
  •  USER:所有者
  •  FD:文件描述符
  •  TYPE:文件类型
  •  DEVICE:磁盘名称
  •  SIZE/OFF:文件大小
  •  NODE:索引节点
  •  NAME:文件名称

2. FD(文件描述符)详解

  •  cwd:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行修改
  •  txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库
  •  rtd:根目录
  •  0:表示标准输出
  •  1:表示标准输入
  •  2:表示标准错误

3.文件类型详解

  •  DIR:目录
  •  CHR:字符类型
  •  BLK:块设备类型
  •  UNIX:UNIX域套接字
  •  FIFO:先进先出(FIFO)队列
  •  IPv4:国际协议(IP)套接字

2. 查看指定文件相关的进程信息,即找出此文件的进程

[root@oldboy ~]# lsof /bin/bash
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld_sa 1298 root txt REG 8,3 941720 134686 /bin/bash
bash 5979 root txt REG 8,3 941720 134686 /bin/bash
bash 5990 root txt REG 8,3 941720 134686 /bin/bash

3. 递归查询某个目录的文件信息

[root@oldboy share]# lsof +D /usr/local/share
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 5990 root cwd DIR 8,3 4096 129846 /usr/local/share
lsof 6695 root cwd DIR 8,3 4096 129846 /usr/local/share
lsof 6696 root cwd DIR 8,3 4096 129846 /usr/local/share

4. 不使用+D选项得到与某个文件有关的进程信息的方法

[root@oldboy share]# lsof |grep '/usr/local/share'
bash 5990 root cwd DIR 8,3 4096 129846 /usr/local/share
lsof 6704 root cwd DIR 8,3 4096 129846 /usr/local/share
grep 6705 root cwd DIR 8,3 4096 129846 /usr/local/share
lsof 6706 root cwd DIR 8,3 4096 129846 /usr/local/share
[root@oldboy share]#

5. 列出某个用户打开的所有文件相关的进程信息

[root@oldboy share]# lsof -u root|wc -l
508
[root@oldboy share]# lsof -u root|more -10
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 8,3 4096 2 /
init 1 root rtd DIR 8,3 4096 2 /
init 1 root txt REG 8,3 150352 139708 /sbin/init
init 1 root mem REG 8,3 65928 132072 /lib64/libnss_file
s-2.12.so
init 1 root mem REG 8,3 1926480 155325 /lib64/libc-2.12.s
o
init 1 root mem REG 8,3 93320 155348 /lib64/libgcc_s-4.
4.7-20120601.so.1

6. 使用不同方法列出与程序有关的文件

方法一:使用-c选项

[root@oldboy share]# lsof -c bash
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 5979 root cwd DIR 8,3 4096 129797 /root
bash 5979 root rtd DIR 8,3 4096 2 /
bash 5979 root txt REG 8,3 941720 134686 /bin/bash
bash 5979 root mem REG 8,3 157072 155324 /lib64/ld-2.12.so
bash 5979 root mem REG 8,3 22536 141851 /lib64/libdl-2.12.so
bash 5979 root mem REG 8,3 1926480 155325 /lib64/libc-2.12.so
bash 5979 root mem REG 8,3 134792 151195 /lib64/libtinfo.so.5.7
bash 5979 root mem REG 8,3 65928 132072 /lib64/libnss_files-2.12.so
bash 5979 root 0u CHR 4,1 0t0 5614 /dev/tty1
bash 5979 root 1u CHR 4,1 0t0 5614 /dev/tty1
bash 5979 root 2u CHR 4,1 0t0 5614 /dev/tty1
bash 5979 root 255u CHR 4,1 0t0 5614 /dev/tty1
bash 5990 root cwd DIR 8,3 4096 129846 /usr/local/share
bash 5990 root rtd DIR 8,3 4096 2 /
bash 5990 root txt REG 8,3 941720 134686 /bin/bash
bash 5990 root mem REG 8,3 157072 155324 /lib64/ld-2.12.so
bash 5990 root mem REG 8,3 22536 141851 /lib64/libdl-2.12.so
bash 5990 root mem REG 8,3 1926480 155325 /lib64/libc-2.12.so
bash 5990 root mem REG 8,3 134792 151195 /lib64/libtinfo.so.5.7
bash 5990 root mem REG 8,3 65928 132072 /lib64/libnss_files-2.12.so
bash 5990 root 0u CHR 136,0 0t0 3 /dev/pts/0
bash 5990 root 1u CHR 136,0 0t0 3 /dev/pts/0
bash 5990 root 2u CHR 136,0 0t0 3 /dev/pts/0
bash 5990 root 255u CHR 136,0 0t0 3 /dev/pts/0

方法二:使用grep重定向

    lsof | grep bash

方法三:使用-p选项

[root@oldboy share]# ps aux|grep bash
root 5979 0.0 0.1 11472 1540 tty1 Ss+ 14:34 0:00 -bash
root 5990 0.0 0.1 11476 1580 pts/0 Ss 14:35 0:00 -bash
root 6744 0.0 0.0 6444 688 pts/0 S+ 15:46 0:00 grep --color=auto bash

[root@oldboy share]# lsof -p 5990
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 5990 root cwd DIR 8,3 4096 129846 /usr/local/share
bash 5990 root rtd DIR 8,3 4096 2 /
bash 5990 root txt REG 8,3 941720 134686 /bin/bash
bash 5990 root mem REG 8,3 157072 155324 /lib64/ld-2.12.so
bash 5990 root mem REG 8,3 22536 141851 /lib64/libdl-2.12.so
bash 5990 root mem REG 8,3 1926480 155325 /lib64/libc-2.12.so
bash 5990 root mem REG 8,3 134792 151195 /lib64/libtinfo.so.5.7
bash 5990 root mem REG 8,3 65928 132072 /lib64/libnss_files-2.12.so
bash 5990 root 0u CHR 136,0 0t0 3 /dev/pts/0
bash 5990 root 1u CHR 136,0 0t0 3 /dev/pts/0
bash 5990 root 2u CHR 136,0 0t0 3 /dev/pts/0
bash 5990 root 255u CHR 136,0 0t0 3 /dev/pts/0

7. 列出所有网络连接,或指定条件的进程

[root@oldboy share]# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1261 root 3u IPv4 9347 0t0 TCP *:ssh (LISTEN)
sshd 1261 root 4u IPv6 9349 0t0 TCP *:ssh (LISTEN)
mysqld 1400 mysql 10u IPv4 9807 0t0 TCP *:mysql (LISTEN)
dhclient 5614 root 6u IPv4 31819 0t0 UDP *:bootpc
sshd 5986 root 3r IPv4 32808 0t0 TCP 192.168.0.109:ssh->192.168.0.102:53902 (ESTABLISHED)

列出使用指定网络条件的进程:

[root@oldboy share]# lsof -i 4
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1261 root 3u IPv4 9347 0t0 TCP *:ssh (LISTEN)
mysqld 1400 mysql 10u IPv4 9807 0t0 TCP *:mysql (LISTEN)
dhclient 5614 root 6u IPv4 31819 0t0 UDP *:bootpc
sshd 5986 root 3r IPv4 32808 0t0 TCP 192.168.0.109:ssh->192.168.0.102:53902 (ESTABLISHED)

8. 列出指定目录下使用NFS文件系统的所有文件

lsof -n /home/zoe

【Linux常见命令】lsof命令的更多相关文章

  1. 菜鸟学Linux命令:lsof命令 查找指定用户、进程、端口打开的文件

    lsof,list open files, 是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件. 命令格式:ls ...

  2. Linux常见目录及命令介绍

    一.Linux中常用的目录介绍:     /        -根目录     /bin    -命令保存目录(普通用户亦可读取的命令)     /boot    -启动目录,启动相关文件     /d ...

  3. Linux进程管理 lsof命令:列出进程调用或打开的文件信息

    lsof命令 通过 ps 命令查询到系统中所有的进程, 通过lsof 命令可以知道这个进程到底在调用哪些文件.lsof 命令格式如下: [root@localhost ~]# lsof [选项] 选项 ...

  4. linux 常见名词及命令(三)

    tar 用于对文件打包压缩或解压. 示例: 打包并压缩文件:tar -czvf 压缩包名.tar.gz 文件名 解压并展开压缩包:tar -zxvf 压缩包名.tar.gz -c 创建压缩文件 -x ...

  5. Linux学习之lsof命令

    lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 ...

  6. 性能工具之linux常见日志统计分析命令

    引言 我前几天写过的性能工具之linux三剑客awk.grep.sed详解,我们已经详细介绍 linux 三剑客的基本使用,接下来我们看看具体在性能测试领域的运用,本文主要介绍的是在 Tomcat 和 ...

  7. linux 常见名词及命令(一)

    linux  PK  wondows 稳定且有效率.免费或少许费用.漏洞少且修补快.多任务多用户. 安全的用户及文件权限策略.适合小内核程序的嵌入系统.相对不耗资源. 热门的开源系统 红帽企业系统(R ...

  8. linux 常见名词及命令(五)

    计划任务服务之一次性任务: at <时间> 安排一次性任务 atq 或at -l 查看任务列表 at -c 序号 预览任务与设置环境 atrm 序号 删除任务 安排任务示例: 在23:30 ...

  9. Linux常见的Shell命令

    1.具体的shell命令用法可以通过help或man命令进入手册来查询其具体的用法.2.终端本质上对应着linux上的/dev/tty设备,linux的多用户登录就是通过不同的/dev/tty设备完成 ...

  10. linux yum安装lsof命令

    [root@ITC-MCC ~]# yum install lsof[USM] permission denied^C[root@ITC-MCC ~]# [root@ITC-MCC ~]# [root ...

随机推荐

  1. Leetcode力扣45题 跳跃游戏 II

    原题目: 跳跃游戏 II 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. 示例: 输入: ...

  2. MySQL服务使用cmd启动与停止服务

    MySQL未设置自动启动,在使用时需要手动打开服务,方法如下 mysql服务的启动: 以管理员的身份运行cmd命令窗口,输入命名 net start mysql 提示:必须使用管理员身份运行cmd 如 ...

  3. JDK12不包含JAXB-API

    ##用JDK12环境下 做EUREKA的的时候 报错如下 java.lang.TypeNotPresentException: Type javax.xml.bind.JAXBContext not ...

  4. 一个关于HttpClient的轮子

    由于本文较长,需要耐住性子阅读,另外本文中涉及到的知识点较多,想要深入学习某知识点可以参考其他博客或官网资料.本文也非源码分析文章,示例中的源码大多是伪代码和剪辑过的代码示例,由于该轮子为公司内部使用 ...

  5. 搭建DVWA Web渗透测试靶场

    文章更新于:2020-04-13 按照惯例,需要的文件附上链接放在文首. 文件名:DVWA-1.9-2020.zip 文件大小:1.3 M 文件说明:这个是新版 v1.9 (其实是 v1.10开发版) ...

  6. .net core 实现excel 和 word 的在线预览

    最新在搞文件的在线预览,网上很多免费的方案都需要是电脑安装office的,这要就很麻烦:收费的插件又太贵了. 不过还是找到一款相对好用的免费在线预览插件. 直接在nuget上搜索ce.office.e ...

  7. javascript 入门 之 bootstrap/bootstrap-table 安装方法

    也和select2一样,可以有三种方法 1.远程调用CDN 2.用bower安装 3.下载 时间原因,暂时先讲第二种,其余两种,以后完善 1.进入根目录,执行bower install bootstr ...

  8. "文本"组件:<text> —— 快应用原生组件

     <template> <div class="container"> <text>H-UI</text> </div> ...

  9. java的套接字实现远程连接

    package jnet;//客户端程序,使用套接字连接服务器import java.net.*;import java.io.*;import javax.swing.*; public class ...

  10. qt creator源码全方面分析(4-1)

    目录 d指针和q指针 简单示例 q指针 QObject和QObjectPrivate qtcreator中的变体1 qtcreator中的变体2 小结 d指针和q指针 我们在类成员名称和使用d指针中, ...