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. ClickHouse学习系列之三【配置文件说明】

    背景 最近花了些时间看了下ClickHouse文档,发现它在OLAP方面表现很优异,而且相对也比较轻量和简单,所以准备入门了解下该数据库系统.在介绍了安装和用户权限管理之后,本文对其配置文件做下相关的 ...

  2. c期末笔记(4)

    未命名易错点 1.0<y<10 在c语言中,0<y<10不是一个正确的表达式,应该利用逻辑运算符替换(y>0&&y<10或者!(y<=0||y ...

  3. Centos装机预备技能

                                                               装机预备技能 1.1问题 本例要求安装一台可用的KVM服务器: RHEL与Cent ...

  4. 基于 Spring Cloud 的微服务架构实践指南(下)

    show me the code and talk to me,做的出来更要说的明白 本文源码,请点击learnSpringCloud 我是布尔bl,你的支持是我分享的动力! 一.引入 上回 基于 S ...

  5. python3的subprocess的各个方法的区别(-)

    subprocess(python3.7) subprocess 主要是为了替换一下的模块函数,允许你执行一些命令,并获取返回的状态码和 输入,输出和错误信息. os.systemos.spawn* ...

  6. Springboot2(二)通过微信熟悉熟悉Spring-boot yml配置文件

    前言:Spring-boot的yml配置文件,这里就不在借助人.狗介绍了,试试套下微信! 创建yml文件 值得注意的是下图中有三种命名方法,前两种是对的,且第二种必须是横线而不是下划线! yml文件的 ...

  7. 基础类封装-pymysql库操作mysql封装

    import pymysql from lib.logger import logger from warnings import filterwarnings filterwarnings(&quo ...

  8. Python爬虫系列(二):requests基础

    1.发送请求: import requests # 获取数据#r是一个 response 对象.包含请求返回的内容r = requests.get('https://github.com/timeli ...

  9. python 集合(set)和字典(dictionary)的用法解析

    Table of Contents generated with DocToc ditctaionary and set hash 介绍 集合-set 创建 操作和访问集合的元素 子集.超集.相对判断 ...

  10. 通过Java HTTP连接将网络图片下载到本地

    通过Java HTTP连接将网络图片下载到本地   只知道浏览器使用的是HTTP协议,那么如何将网络资源使用JavaHTTP下载下来呢! 这只是一个非常简单的小示例,只是不想每次碰到关于此方面的内容忘 ...