导读:

一、用事实说话

二、关于LSOF命令的其它用法:

三、参考文档:

 

正文:

lsof:Finding open files with lsof

作用:查看文件被哪些进程打开

一、用事实说话

【实验】Linux下文件删除、句柄与空间释放问题

窗口1:创建test文件,并用less命令打开它

[root@monitor monitor]# echo "zhengBin is Bkeep" >> test

[root@monitor monitor]# ls –sortk

8  -rw-r--r—1  root       1          Dec  9   16:02 error.txt

120  -rw-r--r—1  root       112         Dec  10  16:38 test

[root@monitor monitor]# less test

zhengBin is Bkeep

(END)

窗口2:使用lsof命令排查问题

[root@monitor monitor]# rm  –rf  test

[root@monitor monitor]# lsof |grep test          //注意,这里)

       root    4r      REG      253,0       18    2850936 /usr/monitor/test (deleted)

[root@monitor ~]# ps -ef |grep 23253         //查看less进程的系统用户,为root

root     23253 23042  0 17:16 pts/1    00:00:00 less test

root     23291 23256  0 17:17 pts/0    00:00:00 grep 23253

[root@monitor ~]# kill -9 23253   //杀掉该进程,系统才会释放test占用的磁盘空间。(重启系统或服务也行)

[root@monitor ~]# lsof |grep test

没有了,说明空间已被释放!

二、关于lsof命令的其它用法:

,查看目录和文件正在被那些进程使用。

[root@monitor monitor]# umount /

umount: /: device is busy

umount: /: device is busy

[root@monitor monitor]# lsof  /

COMMAND     PID      USER   FD   TYPE DEVICE     SIZE    NODE NAME

init          1      root  cwd    DIR  253,0     4096       2 /

init          1      root  rtd    DIR  253,0     4096       2 /

init          1      root  txt    REG  253,0    38620 9306178 /sbin/init

init          1      root  mem    REG  253,0   125736 6686192 /lib/ld-2.5.so

init          1      root  mem    REG  253,0  1602128 6686193 /lib/libc-2.5.so

init          1      root  mem    REG  253,0    16428 6686196 /lib/libdl-2.5.so

init          1      root  mem    REG  253,0    93508 6686210 /lib/libselinux.so.1

init          1      root  mem    REG  253,0   242880 6686209 /lib/libsepol.so.1

migration     2      root  cwd    DIR  253,0     4096       2 /

migration     2      root  rtd    DIR  253,0     4096       2 /

ksoftirqd     3      root  cwd    DIR  253,0     4096       2 /

ksoftirqd     3      root  rtd    DIR  253,0     4096       2 /

,查看远程ip调用了系统那些进程

[root@monitor monitor]# netstat -natp

tcp        0   1008 ::ffff:192.168.254.51:22    ::ffff:192.168.254.149:1066 ESTABLISHED 22779/0

[root@monitor monitor]# lsof -i @192.168.254.149

COMMAND   PID USER   FD   TYPE DEVICE SIZE NODE NAME

sshd    22779 root    3u  IPv6  98877       TCP 192.168.254.51:ssh->192.168.254.149:fpo-fns (ESTABLISHED)

,根据端口号查看服务名

[root@monitor monitor]# lsof -i :25

COMMAND   PID USER   FD   TYPE DEVICE SIZE NODE NAME

sendmail 4653 root    4u  IPv4   9307       TCP monitor:smtp (LISTEN)

,谁在打开sendmail.pid文件?

[root@monitor run]# lsof  /var/run/sendmail.pid

COMMAND   PID USER   FD   TYPE DEVICE SIZE    NODE NAME

sendmail 4653 root    5wW  REG  253,0   33 9667079 /var/run/sendmail.pid

,【重要】查看某个进程号所打开的所有系统文件

参数说明:

-a,所有参数都必须持有真实的文件显示

-p,进程号

-d,txt记录将被过滤掉;^ 排除的意思  (the carat [^] means exclude).

[root@monitor run]# lsof -a -p 4653 -d ^txt        //【重要】

COMMAND   PID USER   FD   TYPE     DEVICE   SIZE    NODE NAME

sendmail 4653 root  cwd    DIR      253,0   4096 9666678 /var/spool/mqueue

sendmail 4653 root  rtd    DIR      253,0   4096       2 /

sendmail 4653 root  mem    REG      253,0        6684758 /lib/libdb-4.3.so (path inode=6684892)

sendmail 4653 root  DEL    REG      253,0        2107155 /usr/lib/liblber-2.3.so.0.2.15.#prelink#.1kBcGu

sendmail 4653 root  DEL    REG      253,0        2107070 /usr/lib/libgssapi_krb5.so.2.2.#prelink#.Y8RNd8

sendmail 4653 root  mem    REG      253,0        2101464 /usr/lib/libz.so.1.2.3 (path inode=2117529)

sendmail 4653 root  mem    REG      253,0  46680 6684713 /lib/libnss_files-2.5.so

sendmail 4653 root  mem    REG      253,0  14596 2162994 /usr/lib/sasl2/libanonymous.so.2.0.22

sendmail 4653 root  mem    REG      253,0 905200 2164220 /usr/lib/sasl2/libsasldb.so.2.0.22

sendmail 4653 root  mem    REG      253,0        6684723 /lib/libresolv-2.5.so (path inode=6686208)

sendmail 4653 root  mem    REG      253,0        6684701 /lib/libcrypt-2.5.so (path inode=6686216)

sendmail 4653 root  mem    REG      253,0        6684759 /lib/libkeyutils-1.2.so (path inode=6686207)

sendmail 4653 root    2w   CHR        1,3           1449 /dev/null

sendmail 4653 root    3u  unix 0xd45eb740           9306 socket

sendmail 4653 root    4u  IPv4       9307            TCP monitor:smtp (LISTEN)

sendmail 4653 root    5wW  REG      253,0     33 9667079 /var/run/sendmail.pid

,ls命令参数解释

[root@monitor monitor]# ls –sortk

8  -rw-r--r—1  root       1          Dec  9   16:02 error.txt

120  -rw-r--r—1  root       112         Dec  10  16:38 test

参数说明:

s:第一列显示的块大小(个);o:类似l 但不显示group;   S:按文件大小排序

r:倒序;  t:按时间排序   k:字节数按KB来显示

【linux】lsof命令和{Linux下文件删除、句柄与空间释放问题}的更多相关文章

  1. Linux lsof命令 以及 恢复删除的文件

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

  2. (转)linux下文件删除的原理精华讲解(考试题答案系列)

    linux下文件删除的原理精华讲解(考试题答案系列) 说明:本文为老男孩linux培训某节课前考试试题及答案分享博文内容的一部分,也是独立成题的,你可以点下面地址查看全部的内容信息.http://ol ...

  3. linux lsof命令详解

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

  4. Linux lsof 命令

    lsof(list open files)是一个查看进程打开的文件的工具. 在 linux 系统中,一切皆文件.通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以 lsof 命令不仅可以查 ...

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

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

  6. Linux lsof命令详解和使用示例【转】

    所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接 ...

  7. 《Linux大棚命令百篇下》网络篇的总结

    本文是<Linux大棚命令百篇下>网络篇的总结 ping -c 指定数量,在windows下会自动停止,linux下会一直ping下去 -q 简短报告 -s 指定每次ping的数据包大小, ...

  8. Linux常用命令--用户管理,文件权限,打包命令等

    幕布链接 Linux常用命令--用户管理,文件权限,打包命令等

  9. 描述Linux下文件删除的原理(计时3分钟)

    Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除.一般来说,每个文件都有2个link计数器:i_count 和 i_nlink. i_coun ...

随机推荐

  1. ajax——dom对xml和html的操作

    上篇文章说到了dom的基础,dom能够操作xml和html,这次主要写利用dom的api去如何去操作xml和html文档. dom操作xml dom操作xml文档之前必须把xml文档装载到xml do ...

  2. Appium 从 0 到 1 搭建移动 App 功能自动化测试平台 (1):模拟器中运行 iOS 应用

    转载:https://testerhome.com/topics/4960 在上一篇文章中,我对本系列教程的项目背景进行了介绍,并对自动化测试平台的建设进行了规划. 在本文中,我将在已准备就绪的iOS ...

  3. Android二维码工具zxing使用

    二维码在我们生活中随处可见.在我眼里简直能够用"泛滥"来形容啦.那怎样在我们Android项目中扫描识别二维码或生成二维码图片呢? 我们通常使用的开源框架是zxing.在githu ...

  4. SolidEdge 工程图中如何标注尺寸公差

    1 先标注基准框,输入基准符号(A B C之类的)   2 点击特征控制,设置马上要标注的特征和公差(可以保存为模板)   3 直接点击要标注的元素即可   4 没有基准的形位公差标注也一样  

  5. 《图论》——广度优先遍历算法(BFS)

    十大算法之广度优先遍历: 本文以实例形式讲述了基于Java的图的广度优先遍历算法实现方法,详细方法例如以下: 用邻接矩阵存储图方法: 1.确定图的顶点个数和边的个数 2.输入顶点信息存储在一维数组ve ...

  6. 基于bootstrap+MySQL搭建动态网站

    这个只是在上个练习项目中的后台管理项目加入了MySQL,数据不是写死的,而是从数据库中获取到的,获取到数据执行增删改查操作,没什么 计数难度,不做介绍

  7. Linux高端内存

    Linux高端内存是针对物理内存来说的,虚拟内存没有高端这个概念.Linux系统将虚拟内存分为两个部分,即用户地 址空间和内核地址空间,对于32位系统来说,虚拟地址空间为4GB,其中用户空间范围为0- ...

  8. canvas转盘抽奖的实现(一)

    网络上已经有了很多转盘抽奖的代码,但大多是用jQuery插件实现的,其中的原理比较难弄明白,于是自己摸索了一个.最终效果如下:     // = totalTime) { stopRotation() ...

  9. tomcat 7安装

    JAVA环境安装 1.下载包 http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin 2.安装 jdk-6u45 ...

  10. Oracle中Hint深入理解

    Hint概述 基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担.但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比. 此时就需要DBA进行 ...