导读:

一、用事实说话

二、关于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. 【Lintcode】二叉树的最大深度 - 比较简单,用递归比较好,不递归也能做,比较麻烦

    给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的距离. 您在真实的面试中是否遇到过这个题? Yes 样例 给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5 这个二叉树的 ...

  2. Ubuntu切换至root错误:su:Authentication failure解决

    当前用户切换到root出现这个错误的原因是没有创建root用户,解决如下: 1.打开终端,输入命令sudo passwd root 会提示输入新的用户密码,输入后会再确认一次,成功后会显示:passw ...

  3. [Algorithms] Sort an Array with a Nested for Loop using Insertion Sort in JavaScript

    nsertion sort is another sorting algorithm that closely resembles how we might sort items in the phy ...

  4. Node.js 是什么

    Node.js 是什么 一个 “编码就绪” 服务器 Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理 ...

  5. Logical Volume Manager (Linux)

    http://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux) Logical Volume Manager (Linux) From Wiki ...

  6. Laravel 数据库连接, 数据库名,配置文件修改

    数据库连接:在根目录(laravel5.1下面有个.env文件,如果没有则会有个.env.example然后将此文件修改成.env文件即可)打开文件:找到:DB_HOST=127.0.0.1  //连 ...

  7. HDU 5296 Annoying problem LCA+树状数组

    题解链接 Annoying problem Time Limit: 16000/8000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/O ...

  8. 封装EF code first用存储过程的分页方法

    一年半没有做过MVC的项目了,还是很怀念(因为现在项目还是原来的ASPX),个人还是喜欢mvc,最近又开始重拾MVC,感觉既熟悉又陌生. 记录一下封装好的分页代码 首先先说下 我使用EF codefi ...

  9. Hadoop实战-Flume之Source interceptor(十一)(2017-05-16 22:40)

    a1.sources = r1 a1.sinks = k1 a1.channels = c1 # Describe/configure the source a1.sources.r1.type = ...

  10. Java笔记之利用反射访问或修改private成员

    对于类A.B,A是B的基类,A有一个私有成员name A.java public class A { private String name = "A"; public void ...