【linux】lsof命令和{Linux下文件删除、句柄与空间释放问题}
导读:
一、用事实说话
二、关于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下文件删除、句柄与空间释放问题}的更多相关文章
- Linux lsof命令 以及 恢复删除的文件
1.简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传 ...
- (转)linux下文件删除的原理精华讲解(考试题答案系列)
linux下文件删除的原理精华讲解(考试题答案系列) 说明:本文为老男孩linux培训某节课前考试试题及答案分享博文内容的一部分,也是独立成题的,你可以点下面地址查看全部的内容信息.http://ol ...
- linux lsof命令详解
linux lsof命令详解 简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访 ...
- Linux lsof 命令
lsof(list open files)是一个查看进程打开的文件的工具. 在 linux 系统中,一切皆文件.通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以 lsof 命令不仅可以查 ...
- [转贴]linux lsof命令详解
linux lsof命令详解 https://www.cnblogs.com/sparkbj/p/7161669.html 简介 lsof(list open files)是一个列出当前系统打开文件的 ...
- Linux lsof命令详解和使用示例【转】
所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接 ...
- 《Linux大棚命令百篇下》网络篇的总结
本文是<Linux大棚命令百篇下>网络篇的总结 ping -c 指定数量,在windows下会自动停止,linux下会一直ping下去 -q 简短报告 -s 指定每次ping的数据包大小, ...
- Linux常用命令--用户管理,文件权限,打包命令等
幕布链接 Linux常用命令--用户管理,文件权限,打包命令等
- 描述Linux下文件删除的原理(计时3分钟)
Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除.一般来说,每个文件都有2个link计数器:i_count 和 i_nlink. i_coun ...
随机推荐
- ※版本管理※=>☆SVN工具=>※解决地域麻烦※№→搭建自己的网络SVN (SourceForge 免费) [转]
源文 http://blog.csdn.net/xiaoting451292510/article/details/8562570 分类: 版本管理 2013-02-01 14:44 26057人阅读 ...
- Java菜鸟到大牛学习路线培训教程
第1阶段(Java程序员) - Java语言基础 - 101 JavaSE -01-常见Dos命令.Java历史.Java跨平台.配置Path环境变量.第一个HelloWorld例子 -02-配置JA ...
- Oracle Apex 有用笔记系列 6 - 可编辑交互报告 Editable Interactive Report
据笔者所知.Apex 4.x 是没有提供可编辑交互报告组件的.这就须要我们手动实现. 事实上这也并非非常复杂,仅仅须要简单几步. 1. 依据向导建立一个interactive report.查询语句能 ...
- Hadoop 源码阅读技巧
http://www.cnblogs.com/xuxm2007/category/388607.html 个人谈谈阅读hadoop源代码的经验.首先,不得不说,hadoop发展到现在这个阶段, ...
- python正则方法
通过正则替换字符串 res=re.sub(正则,newString,srcString)//返回替换后的字符串 res,m=res.subn(正则,newString,srcString)//返回替换 ...
- Linux中du和df
Linux运维过程中,常常发现du和df返回值不一样,偶尔会发现区别非常大. 特定情况下,可能df看到磁盘已满,可是du推断磁盘剩余空间非常大. 文件系统分配当中的一些磁盘块用来记录它自身的一些数据. ...
- 算法NB三人组
#快速排序-除了python自带的sort排序模块之外就这个最好用,只需会这个就行,其他的排序了解就好,能用冒泡,插入..的都可以用快排快速实现 import random from timewrap ...
- 04 http协议模拟登陆发帖
<?php require('./http.class.php'); $http = new Http('http://home.verycd.com/cp.php?ac=pm&op=s ...
- MapReduce 1工作原理图文详解
MapReduce工作原理图文详解 一 MapReduce程序执行流程 程序执行流程图如下: 流程分析:1.在客户端启动一个作业.2.向JobTracker请求一个Job ID.3.将运行作业所需要的 ...
- Oracle 一行拆分为多行
测试数据: CREATE TABLE t (str VARCHAR2(30)); INSERT INTO t VALUES ( 'X,Y,Z' ); INSERT INTO t VALUES ( 'X ...