lsof,就是"ls open file"的意思,是一个显示文件打开句柄的工具,下面汇总一些常用的命令

展示系统中所有

直接执行lsof,就是现实系统中所有打开句柄

# lsofCOMMAND  PID       USER   FD      TYPE     DEVICE  SIZE/OFF       NODE NAME
init       1       root  cwd       DIR        8,1      4096          2 /
init       1       root  txt       REG        8,1    124704     917562 /sbin/init
init       1       root    0u      CHR        1,3       0t0       4369 /dev/null
init       1       root    1u      CHR        1,3       0t0       4369 /dev/null
init       1       root    2u      CHR        1,3       0t0       4369 /dev/null
init       1       root    3r     FIFO        0,8       0t0       6323 pipe

展示title中的字段解释

  • COMMAND
    调用命令
  • PID
    process ID
  • USER
    用户
  • FD
    file description
    cwd – Current Working Directory 当前位置
    txt – Text file 文本文件
    mem – Memory mapped file 内存映射文件
    mmap – Memory mapped device 内存映射设备
    NUMBER – r for read, w for write, u for read and write. 权限数字表示
  • TYPE
    REG – Regular File 普通文件
    DIR – Directory 文件夹
    FIFO – First In First Out 先入先出文件(一般为管道文件)
    CHR – Character special file 字符串文件

查看文件被那些进程使用

# lsof /var/log/syslogCOMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
rsyslogd 488 syslog    1w   REG    8,1     1151 268940 /var/log/syslog

显示文件夹下所有占用文件的句柄信息

# lsof +D /var/log/COMMAND   PID   USER  FD   TYPE DEVICE SIZE/OFF   NODE NAME
rsyslogd  488 syslog   1w   REG    8,1     1151 268940 /var/log/syslog
rsyslogd  488 syslog   2w   REG    8,1     2405 269616 /var/log/auth.log
console-k 144   root   9w   REG    8,1    10871 269369 /var/log/ConsoleKit/history

显示某个程序执行的句柄

通过-c 指定, 它是字符串前缀匹配

# lsof -c ssh -c initCOMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
init         1       root  txt    REG        8,1   124704  917562 /sbin/init
init         1       root  mem    REG        8,1  1434180 1442625 /lib/i386-linux-gnu/libc-2.13.so
init         1       root  mem    REG        8,1    30684 1442694 /lib/i386-linux-gnu/librt-2.13.so
...
ssh-agent 1528 lakshmanan    1u   CHR        1,3      0t0    4369 /dev/null
ssh-agent 1528 lakshmanan    2u   CHR        1,3      0t0    4369 /dev/null
ssh-agent 1528 lakshmanan    3u  unix 0xdf70e240      0t0   10464 /tmp/ssh-sUymKXxw1495/agent.1495

查看mount文件或者文件夹被谁占用

# lsof +D /mnt/glusterFS/cache/
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF                 NODE NAME
test        29757 root   84u   REG  0,331   122880 13547194176911157464 /mnt/glusterFS/cache/365701222416481548_767717188491542528.mp3

查看某个用户打开的句柄

# lsof -u lakshmananCOMMAND    PID       USER   FD   TYPE     DEVICE SIZE/OFF       NODE NAME
update-no 1892 lakshmanan   20r  FIFO        0,8      0t0      14536 pipe
update-no 1892 lakshmanan   21w  FIFO        0,8      0t0      14536 pipe
bash      1995 lakshmanan  cwd    DIR        8,1     4096     393218 /home/lakshmanan

如果你希望列出所有但是排除用户lakshmanan,可以这样

# lsof -u ^lakshmananCOMMAND    PID       USER   FD      TYPE     DEVICE  SIZE/OFF       NODE NAME
rtkit-dae 1380      rtkit    7u     0000        0,9         0       4360 anon_inode
udisks-da 1584       root  cwd       DIR        8,1      4096          2 /

如果想找到某个用户下使用的进程ID信息,可以执行
lsof -t -u lakshmanan

配合kill可以执行按用户杀进程
kill -9 `lsof -t -u lakshmanan

查看某个进程的句柄

# lsof -p 1753COMMAND  PID       USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
bash    1753 lakshmanan  cwd    DIR    8,1     4096  393571 /home/lakshmanan/test.txt
bash    1753 lakshmanan  rtd    DIR    8,1     4096       2 /
bash    1753 lakshmanan  255u   CHR  136,0      0t0       3 /dev/pts/0
...

按AND组合条件

如果将不同的命令条件组合使用,这里默认是OR的关系,如

# lsof -u lakshmanan -c initCOMMAND    PID       USER   FD   TYPE     DEVICE SIZE/OFF       NODE NAME
init         1       root  cwd    DIR        8,1     4096          2 /
init         1       root  txt    REG        8,1   124704     917562 /sbin/init
bash      1995 lakshmanan    2u   CHR      136,2      0t0          5 /dev/pts/2
bash      1995 lakshmanan  255u   CHR      136,2      0t0          5 /dev/pts/2
...

如果要实现AND的组合,需要添加-a,如lsof -u lakshmanan -c init -a

repeat模式

有点类似ping的方式,通过-r参数来让命令重复执行
lsof -u lakshmanan -c init -a -r5
r后面的数字表示间隔秒数

特别注意的是,可以使用==+r== 表示直到没有结果返回结束

显示所有网络连接

# lsof -iCOMMAND    PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
avahi-dae  515 avahi   13u  IPv4   6848      0t0  UDP *:mdns
avahi-dae  515 avahi   16u  IPv6   6851      0t0  UDP *:52060
cupsd     1075  root    5u  IPv6  22512      0t0  TCP ip6-localhost:ipp (LISTEN)

可以指定-i4或者-i6单独来看IPv4或者IPv6

可以指定tcp/udp来单独看,如lsof -i tcp; lsof -i udp;

查看指定端口的占用情况

# lsof -i :25COMMAND  PID        USER   FD   TYPE DEVICE SIZE NODE NAME
exim4   2541 Debian-exim    3u  IPv4   8677       TCP localhost:smtp (LISTEN)

【linux】lsof的常用命令汇总相关推荐

  1. linux更新项目常用命令汇总

    linux服务器线上更新项目常用命令汇总 因为之前nginx和uwsgi已经配好了要运行的项目位置,所以服务器上的项目文件夹建议不要变动,要变动的只是项目文件夹下的所有文件,用新的所有文件直接覆盖,可 ...

  2. Linux之find常用命令汇总

    查找当前目录下文件名rumenz.txt > find rumenz.txt rumenz.txt 查找/home下文件名为ruemnz.txt的文件,忽略大小写 > find /home ...

  3. Linux运维常用命令汇总

    线上查询及帮助命令 (2 个) man查看命令帮助,命令的词典,更复杂的还有 info,但不常用.  help查看 Linux 内置命令的帮助,比如 cd 命令. 文件和目录操作命令 (18 个) l ...

  4. linux日志汇总,Linux日志分析常用命令汇总(示例代码)

    1.查看当天有多少个IP访问: awk '{print $1}' log_file|sort|uniq|wc –l 2.查看某一个页面被访问的次数: grep "/index.php&quo ...

  5. linux常用命令汇总

    linux常用命令汇总,以便需要时快速查询 中文释义 相应命令 备注 在文件中查找 grep error catalina.out 在catalina.out文件中查找error信息 重启nginx ...

  6. 史上最全的Linux常用命令汇总①收藏这一篇就够了!(超全,超详细)

    史上最全的Linux常用命令汇总①(超全面!超详细!)收藏这一篇就够了! Linux命令基础 Shell Linux命令分类 Linux命令行的格式 编辑Linux命令行的辅助操作 获取命令帮助的方法 ...

  7. Linux常用命令汇总【思维导图】

    Linux常用命令汇总[文章末尾附有完整常用命令的思维导图,建议收藏] 文章大致分为以下小节 Linux入门 Linux目录结构 VI/VIM编辑器(重点) 网络配置 常用基本命令(重点) 常用命令思 ...

  8. linux常用的命令shell,Linux操作系统Shell和常用命令汇总

    简述 本文主要介绍Shell和Linux常用命令. Shell Shell 是一个用 C 语言编写的应用程序,提供了用户访问Linux操作系统内核服务的界面,它可以用来启动.挂起.停止.编写程序.Sh ...

  9. linux 常用命令汇总(面向面试)

    linux 常用命令汇总 个人认为先掌握一些比较常用的,剩下的需要再学 总结了一些面试比较可能会问道的命令 文章目录 linux 常用命令汇总 基础命令 ulimit dos2unix和unix2do ...

最新文章

  1. kernel 3.10内核源码分析--中断--中断和异常返回流程
  2. 高性能网站架构设计之缓存篇(6)- Redis 集群(中)
  3. android 日期相,Android日历始终保持相同的日期
  4. tar解压出错tar: Child returned status 1
  5. Module build failed: ReferenceError: Unknown plugin module-resolver specified
  6. 查询mysql数量_Linux 运维基础 Mysql性能优化
  7. 基于struts2、spring的应用闲置一段时间后报空指针错(转)
  8. 私生子与假婊子——谈中国手机JAVA游戏
  9. 消防工程师 10.1 火灾自动报警系统-组成和工作原理
  10. 在mac上使用PDF Expert中常见问题解答
  11. vue树形权限菜单_基于Vue的树形菜单之两种方式实现
  12. 开发会自测为什么测试还会单独存在?软件测试八大误区
  13. 软件定义网络(PART 3)
  14. 基于C++实现视频聊天软件(一)
  15. 同盾李晓林:打造互联互通机制,化解数据安全保护与数据共享矛盾
  16. 服务器发不了邮件,发邮件服务器-如何发邮件?为什么发不出去?服务器是什么?发邮件时,信息要服务器 爱问知识人...
  17. (NO.00001)iOS游戏SpeedBoy Lite成形记(二十)
  18. 基于深度学习的图像增强综述
  19. 综合能源系统仿真,冷热电三联供仿真,simulink仿真
  20. 【捷哥浅谈PHP】第十一弹---NoSQL数据库之MongoDB的CURD操作(二)

热门文章

  1. DataFrame类型数据的主要处理方法
  2. R语言-路径设置与工作目录修改
  3. 容器必须设置宽度吗_消防泵必须设置自动巡检柜吗
  4. BMC:幼年特发性关节炎患儿肠道菌群的特征、生物标记的识别及其在临床预测中的作用...
  5. 高分文章精选 | 纳米孔宏基因组测序的表现
  6. Cell重磅发布15万人体微生物基因组!超大规模宏基因组研究揭示数千计人体微生物新物种...
  7. Error: cannot allocate vector of size XX Gb
  8. Python计算医疗数据训练集、测试集的对应的临床特征:训练集(测试集)的阴性和阳性的样本个数、连续变量的均值(标准差)以及训练测试集阳性阴性的p值、离散变量的分类统计、比率、训练测试集阳性阴性的p值
  9. ModuleNotFoundError: No module named ‘cx_Oracle‘
  10. Error in exists(x): 第一个参数不对