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. 1018 Public Bike Management (30 分)

    There is a public bike service in Hangzhou City which provides great convenience to the tourists fro ...

  2. PTA数据结构与算法题目集(中文) 7-15

    PTA数据结构与算法题目集(中文)  7-15 7-15 QQ帐户的申请与登陆 (25 分)   实现QQ新帐户申请和老帐户登陆的简化版功能.最大挑战是:据说现在的QQ号码已经有10位数了. 输入格式 ...

  3. Linux 定时实行一次任务命令

    当我们想在指定的时间自动执行 一次 任务的时候,可以使用at命令 启动服务 使用时首先检查atq的服务是否启动 service atd status # 检查atd的状态 service atd st ...

  4. 我去,还在这样读写 excel 这也太低效了吧!

    前言 博文地址:https://sourl.cn/SsD3AM 最近读者小 H 给小黑哥发来私信: 小黑哥,最近我在负责公司报表平台开发,需要导出报表到 excel 中.每次使用 POI 开发,都要写 ...

  5. (二) vim的Tabbar插件

    关闭Tabbar中一个buffer的技巧: 如果你使用Tabbar的同时还集成了某种窗口分割插件(如 Winmanager,NERDTree)或者vim处于分栏显示状态,这时你想用传统的 :bd 或 ...

  6. 汇编刷题:在M单元和N单元分别存有一个8位无符号数36H和95H,要求比较并输出 M大于N 或者 M小于N

    DATA SEGMENT     M DB 36H     N DB 95H     RESAULT1 DB 'M>N$'     RESAULT2 DB 'M<N$' DATA ENDS ...

  7. Spring Cloud 系列之 Consul 注册中心(二)

    本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Consul 注册中心(一) 本篇文章讲解 Consul 集群环境的搭建. Consul 集群 上图是一个简单的 Co ...

  8. 子域名爆破工具:OneForALL

    0x00 简介 OneForAll是一款功能强大的子域收集工具 0x01 下载地址 码云: https://gitee.com/shmilylty/OneForAll.git Github: http ...

  9. sqli-labs通关----1~10

    最近感觉自己sql注入有点生疏了,想来复习一下,做个记录. 第一关 1.尝试报错我们在1之后加上',根据反馈信息1'后面多了一个'所以我们想办法闭合用 'or 1=1 --+.注意这里#没作用 2.接 ...

  10. AJ学IOS 之微博项目实战(13)发送微博调用相机里面的图片以及调用相机

    AJ分享,必须精品 一:效果 二:代码 相机部分就简单多了,几行代码调用而已,但是如果你要是想实现更多丰富的功能,需要自己写.利用AssetsLibrary.framework,利用这个框架可以获得手 ...