Linux如何查看文件打开情况

作者 : 开心源码 本文共1235个字,预计阅读时间需要4分钟 发布时间: 2022-05-13 共212人阅读

前言

在linux环境下,任何事物都以文件的形式存在,这便产生了一句格言:“一切皆文件”,通过lsof命令便能查看文件打开情况。而lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)等。

lsof可以打开哪些文件

1、普通文件2、目录3、网络文件系统的文件4、字符或者设施文件5、共享库6、管道、命名管道7、符号链接8、网络文件(例如:NFS file、网络socket,unix域名socket)

lsof详情

lsof(list open files)是一个查看当前系统文件的工具。在终端上输入lsof,假如没有安装请自行yum install lsof或者者apt-get install lsof。

lsof信息太多,可以在终端加上lsof|more,more命令用于将内容较长的文本文件内容进行分屏显示,方便阅读。

lsof输出各列信息的意义如下:

COMMAND:进程的名称PID:进程标识符USER:进程的所属组FD:文件形容符,应用程序通过文件形容符识别该文件。如cwd、txt等。TYPE:文件类型,如DIR、REG等DEVICE:指定磁盘的名称SIZE/OFF:文件的大小NODE:索引节点(文件在磁盘上的标识)NAME:打开文件确实切名称

使用场景举例

列出被删除但占用空间的文件

常常是因为某个大文件被删除了,但是它却被某个进程打开,导致通过普通的方式找不到它的踪迹,最常见的就是日志文件,但是还可以通过lsof命令发现这样的文件:

lsof |grep deleted

从上面的信息来看,这些文件被删除但是依然被打开,在终端中查找时显示deleted红色的字面。

恢复打开但被删除的文件

前面我们可以找到被删除但是依然被打开的文件,实际上文件并没有真正的消失,假如是意外被删除的,我们还有手段恢复它。/var/log/messages文件为例,我们先看一
下/var/log/messages文件是什么进程打开的。

原价系统log目录下的文件:

此时,删除文件rm -f /var/log/messages,这是时候用ls查看文件已经不存在了。

而后使用lsof查看那个进程打开了该文件:

可以找到进程id为1021的进程打开了该文件,我们知道每个进程在/proc下都有文件形容符打开的记录:

这里就找到了被删除的messages文件,文件形容符是6,我们把它重定向出来:

这样我们就恢复了messages文件。

列出所有的网络连接

lsof -i

查看与某个ip地址建立的连接

列出所有tcp 网络连接信息

总结

本篇只对lsof功能的简单详情,要查看完整参考,运行man lsof命令。

(微信公众号【程序猿编码】)(增加本人微信号,备注加群,进入程序猿编码交流群,回复:领取学习资料,获取每日干货)

欢迎关注 微信公众号【程序猿编码】,专注于Linux c/c++ 、Python、Go语言、数据结构与算法、网络编程相关知识,常用的程序员工具。还有每日00:10分之前升级 新闻简报,即刻知晓天下事!

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Linux如何查看文件打开情况

发表回复