losf 命令可以列出某个进程打开的所有文件信息。打开的文件可能是普通的文件,目录,NFS文件,块文件,字符文件,共享库,常规管道,明明管道,符号链接,Socket流,网络Socket,UNIX域Socket,以及其它更多。
1 列出系统上所有打开的文件:
[root@rac1 mysql]# lsof | more
COMMAND     PID      USER   FD      TYPE             DEVICE       SIZE       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      43496   17727785 /sbin/init
 
2 查看谁在使用指定的文件
[root@rac1 ~]# lsof /tmp/mysql.sock                            
COMMAND   PID  USER   FD   TYPE             DEVICE SIZE     NODE NAME
mysqld  24319 mysql   16u  unix 0xffff8100918a8c00      44743909 /tmp/mysql.sock
 
3 递归查看指定目录下所有打开的文件
[root@rac1 ~]#  lsof +D /opt/mysql/  
COMMAND   PID  USER   FD   TYPE DEVICE       SIZE     NODE NAME
mysqld  24319 mysql  cwd    DIR    8,3       4096 19824642 /opt/mysql/data
mysqld  24319 mysql    3u   REG    8,3        152 19824646 /opt/mysql/data/mysql-log-bin.index
mysqld  24319 mysql    4uW  REG    8,3 4875878400 20283611 /opt/mysql/data/ibdata1
mysqld  24319 mysql    9uW  REG    8,3    5242880 20283612 /opt/mysql/data/ib_logfile0
mysqld  24319 mysql   10uW  REG    8,3    5242880 20283613 /opt/mysql/data/ib_logfile1
mysqld  24319 mysql   12w   REG    8,3      12957 19824652 /opt/mysql/data/slow_query.log
 
4 查看指定用户打开的所有文件
[root@rac1 ~]# lsof -u oracle
COMMAND    PID   USER   FD   TYPE             DEVICE     SIZE     NODE NAME
nmz       3211 oracle  cwd    DIR                8,3     4096 10813466 /home/oracle
nmz       3211 oracle  rtd    DIR                8,3     4096        2 /
nmz       3211 oracle  txt    REG                8,3   673908 19398913 /opt/rac/oracle/11.2.0/rac/ccr/bin/nmz
nmz       3211 oracle  mem    REG                8,3   125736  2820762 /lib/ld-2.5.so
nmz       3211 oracle  mem    REG                8,3  1606808  2818065 /lib/libc-2.5.so
nmz       3211 oracle    3uW  REG                8,3        0 19398727 /opt/rac/oracle/11.2.0/rac/ccr/hosts/rac1/log/sched.lock
nmz       3211 oracle    4w   REG                8,3      853 19398726 /opt/rac/oracle/11.2.0/rac/ccr/hosts/rac1/log/sched.log
nmz       3211 oracle    5r   REG                8,3    16896 20906832 /opt/rac/oracle/11.2.0/rac/ccr/mesg/nmzus.msb
注意:^符号,它执行取反操作 lsof -u ^oracle 表示除oracle 之外的用户打开的文件
5 查看某个程序打开的所有文件
-c选项限定只列出以apache开头的进程打开的文件:
root@rac1 shell]# lsof -c mysql
COMMAND   PID  USER   FD   TYPE             DEVICE       SIZE     NODE NAME
mysqld  24319 mysql  cwd    DIR                8,3       4096 19824642 /opt/mysql/data
mysqld  24319 mysql  rtd    DIR                8,3       4096        2 /
mysqld  24319 mysql  txt    REG                8,3   45648978 23429121 /usr/sbin/mysqld
mysqld  24319 mysql  mem    REG                8,3     139416 21201203 /lib64/ld-2.5.so
mysqld  24319 mysql  mem    REG                8,3    1713160 21201204 /lib64/libc-2.5.so
mysqld  24319 mysql  mem    REG                8,3      23360 21201206 /lib64/libdl-2.5.so
6 查看某个用户与某个程序打开的文件
lsof -u username -c 进程名    是或的关系,表示所有由某个用户或某个进程打开的文件
lsof -a -u username -c 进程名 是与的关系 
7 查看所有由某个PID对应的进程打开的文件
  使用 -p 参数来过滤输出
[root@rac1 ~]# lsof  -p 1
COMMAND PID USER   FD   TYPE DEVICE    SIZE     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   43496 17727785 /sbin/init
init      1 root  mem    REG    8,3  139416 21201203 /lib64/ld-2.5.so
init      1 root  mem    REG    8,3 1713160 21201204 /lib64/libc-2.5.so
init      1 root  mem    REG    8,3   23360 21201206 /lib64/libdl-2.5.so
init      1 root  mem    REG    8,3   95464 21201216 /lib64/libselinux.so.1
init      1 root  mem    REG    8,3  247528 21201215 /lib64/libsepol.so.1
init      1 root   10u  FIFO   0,17             1477 /dev/initctl
8 查看网络连接
-i 参数列出所有打开了网络套接字(TCP和UDP)的进程
 a 查看tcp 连接
 b 查看udp 连接
 c 找到使用某个端口的进程
   # lsof -i :3306
   :3306和-i选项组合可以让lsof列出占用TCP或UDP的25端口的进程。
 
 d 找到使用某个udp端口号的进程
   # lsof -i udp:53
 e 可以找到使用某个tcp端口的进程:
   # lsof -i tcp:80
 f 找到某个用户的所有网络连接
   # lsof -a -u mysql -i
   [root@rac1 ~]# lsof -a -u mysql -i
   COMMAND   PID  USER   FD   TYPE   DEVICE SIZE NODE NAME
   mysqld  24319 mysql   11u  IPv6 48586515       TCP rac1:mysql->rac1:39045 (ESTABLISHED)
   mysqld  24319 mysql   14u  IPv6 44743908       TCP *:mysql (LISTEN)
 
9 列出所有NFS(网络文件系统)文件
   # lsof -N
   这个参数很好记,-N就对应NFS。
 
10 列出所有对应某个组id的进程
   # lsof -g 1234
   进程组用来来逻辑上对进程进行分组,这个例子查找所有PGID为1234的进程打开的文件。
11 列出所有与某个描述符关联的文件
   # lsof -d 2   会列出所有以描述符2打开的文件。
   可以为描述符指定一个范围:
   # lsof -d 0-2 会列出所有描述符为0,1,2的文件。
   -d选项还支持其它很多特殊值,下面的命令列出所有内存映射文件:
   # lsof -d mem
   txt则列出所有加载在内存中并正在执行的进程:
   # lsof -d txt
12 输出使用某些资源的进程pid
   # lsof -t -i
   -t选项输出进程的PID,你可以将它和-i选项组合输出使用某个端口的进程的PID,下面的命令将会杀掉所有使用网络的进程:
   # kill -9 `lsof -t -i`
13  循环列出文件
  # lsof -r 1
   -r选项让lsof可以循环列出文件直到被中断,参数1的意思是每秒钟重复打印一次,这个选项最好同某个范围比较小的查询组合使用,比如用来监测网络活动:
  # lsof -r 1 -u john -i -a

lsof 命令简介的更多相关文章

  1. lsof命令简介

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

  2. Linux系统下强大的lsof命令使用宝典

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

  3. lsof命令总结

    1.lsof 简介 lsof 是 linux 下的一个非常实用的系统级的监控.诊断工具.它的意思是 List Open Files,很容易你就记住了它是 “ls + of”的组合~它可以用来列出被各种 ...

  4. linux lsof命令详解

    linux lsof命令详解 简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访 ...

  5. linux 系统监控、诊断工具之 lsof 用法简介

    1.lsof 简介 lsof 是 Linux 下的一个非常实用的系统级的监控.诊断工具. 它的意思是 List Open Files,很容易你就记住了它是 "ls + of"的组合 ...

  6. lsof命令详解(转)

    lsof命令详解(转) 上一篇 / 下一篇  2011-06-09 21:56:41 / 个人分类:Linux 查看( 351 ) / 评论( 0 ) / 评分( 0 / 0 ) 在Linux中,ls ...

  7. 牛逼的lsof命令!!!

    linux lsof命令详解 简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访 ...

  8. [转贴]linux lsof命令详解

    linux lsof命令详解 https://www.cnblogs.com/sparkbj/p/7161669.html 简介 lsof(list open files)是一个列出当前系统打开文件的 ...

  9. Linux 利用lsof命令恢复删除的文件

    lsof命令 lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP.UDP).找回/恢复删除的文件.是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需 ...

随机推荐

  1. jQuery在多个div中,删除指定项

    之前工作中有一个需求,就是在一堆图片列表中,点击具体的图片,并从界面移除:点击具体的图片,下载:这是一个思路 <style type="text/css" media=&qu ...

  2. Android 给WebView设置Cookie

    最近项目中用到WebView访问新浪支付页面,有个要求是必须是登录状态,否则会报Token过期,然后我简单的将我从cookie中取得的ticket,即一串数字可以代表用户登录的唯一标识作为参数拼接到u ...

  3. ndis6 how to drop packets

    In ndis6 how to drop packets? in FilterSendNetBufferLists: FILTER_RELEASE_LOCK(&pFilter->Lock ...

  4. List of features and minimum Clang version with support

    #1: C++11 Language Feature C++11 Proposal Available in Clang? Rvalue references N2118 Clang 2.9      ...

  5. webpack——entry,output,plugins,loader,chunk知识

    entry:打包入口 代码的入口,找到依赖模块 打包的入口,webpack去哪个文件找依赖,或是去那个文件依赖的依赖 可以是一个或者多个入口 例如: 1.module.exports={ entry: ...

  6. Vue学习之路第九篇:双向数据绑定 v-model指令

    1.学习准备: ①:双向数据绑定可以简单理解为:后端定义的数据改变,前端页面展示的时候会自动改变,数据通过前端页面修改的时候,后端定义的数据内容也会随之改变. ②:指令中只有v-model可以实现双向 ...

  7. vue 删除某个元素和删除某些元素

    今天做项目使用前端vue框架,需要循环遍历去删除一些数组元素.开始思想局限,一直纠结如何去循环删除,犹豫循环删除数组值下标会发生变化,并不是一种好的方法. 方法一:使用forEach 和 splice ...

  8. debian 9 安装Virtual Box

    1.去官网下载deb包,例如包名: virtualbox-.2_5.2.18-124319_Debian_stretch_amd64.deb 2.安装 .2_5.2.18-124319_Debian_ ...

  9. 紫书 例题8-2 UVa 11605(构造法)

    这道题方法非常的巧妙, 两层的n*n, 第一层第I行全是第I个国家, 第二层的第j列全是第j个国家.这样能符合题目的条件.比如说第1个国家, 在第一层的第一行全是A, 然后在第二层的第一行就有ABCD ...

  10. STM32利用TIM3产生一个1--100Hz可调频率

    目标:利用TIM3结合普通GPIO实现一个1--100HZ的可控频率,误差在0.5HZ以内 核心:要实现该功能首先要明确频率的定义,频率就是1秒内发生周期性变化的次数,例如一个正弦波,1S内,走了15 ...