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. 老技术新谈,Java应用监控利器JMX(1)

    先聊聊最近比较流行的梗,来一次灵魂八问. 配钥匙师傅: 你配吗? 食堂阿姨: 你要饭吗? 算命先生: 你算什么东西? 快递小哥: 你是什么东西? 上海垃圾分拣阿姨: 你是什么垃圾? 滴滴司机: 你搞清 ...

  2. block 的内存结构衍生出来的面试题

    今天在群里看到大佬们在讨论一个面试题,问如下代码在 32bit 和 64bit 系统上分别报什么错误: #import <Foundation/Foundation.h> int main ...

  3. python3(八) function

    # Python 常用内置函数 https://docs.python.org/3/library/functions.html#abs print(help(abs)) # Return the a ...

  4. leetcode c++做题思路和题解(2)——链表的例题和总结

    链表的例题和总结 0. 目录 环形链表 1. 环形链表 题目: https://leetcode-cn.com/problems/linked-list-cycle/ 看了别人的思路真是感概万千,思路 ...

  5. Java课程设计之——爬虫篇

    主要使用的技术 Httplcient Jsoup 多线程 dao模式 网络爬虫简介 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取 ...

  6. matlab计算样本熵

    计算14通道得脑电数据吗,将得出的样本熵插入Excel表格 a = zeros(1,14); b = a'; for i =1:14 b(i) = SampEn(d1_1(i,1:3000),2,0. ...

  7. Daily Scrum 12/10/2015

    Zhaoyang: Finished the implementation of query suggestion UI; Yandong: Changed the fusion algorithm ...

  8. Q - QQpet exploratory park HDU - 1493 (概率DP)

    题目大意: 一共有61个位置,标记为0~60.其中有10个重要位置,分别为:5, 12, 22, 29, 33, 38, 42, 46, 50 and 55. 有一个筛子,一共6个面,标有1~6.摇到 ...

  9. E1. Send Boxes to Alice (Easy Version)

    题解: 保存每个1的位置.然后记录1的总个数cnt,如果存在一个k使得这个k是每个集合的倍数,那么为了使操作次数最小,这个k应该是cnt的质因子.(因为都是每个集合的数目1,使每个集合的数目变为2需要 ...

  10. Mac 安装 brew(最新教程,绝对可行)

    现在安装brew,一会报这个错,一会儿报那个错,上网查了很多教程,用了很多时间都是不可以,电脑开VPN翻墙也不行. Warning: The Ruby Homebrew installer is no ...