`

lsof命令 详解

阅读更多
lsof命令的原始功能是列出打开的文件的进程,但LINUX下,所有的设备都是以文件的行式存在的,所以,lsof的功能很强大!
语法:lsof [-?ahlnNPRsv][-c c][+|-d d][+|-D D][-g [s]] [+|-L [I]][-p s][+|-r [t]][-u s][names]
参数说明:若没有加上任何参数,lsof会列出所有被程序开启的文件。
-? -h 这两个参数意思相同,显示出lsof的使用说明 -a 参数被视为AND,会影响全部的参数
-C c 显示出以字符或字符串c开头的命令程序开启的文件,如$lsof -C init
+d s 在文件夹s下搜寻,此参数不会继续深入搜寻此文件夹。如显示在/usr/local下被程序开启的文件:$lsof +d /usr/local +D D 同上,但是会以该文件为基础往下全部搜寻,这样花费较大的CPU时 间,请谨慎使用
-d s 此参数以file descriptor(FD)值显示结果,可以采用范围(1-3)或个别,如显示FD为4的进程:$lsof -d 4
-g [s] 以程序的PGID显示,也可以采用范围或个别表示,若没有特别指定,则显示全部,如显示PGID为6的进程:$lsof -g 6
-i 用以监听有关的任何符合的地址,若没有相关地址被指定,则监听全部 
语法: lsof -i [46][protocol][@hostname|hostaddr][:serivce|port]
说明: 46  IPv4 or IPv6
protocol TCP or UDP
hostname internet host name
hostaddr IPv4地址
service /etc/service中的service name
port 端口号
-l 此参数禁止将user ID 转换为登录的名称,默认是登录名称
+|-L [l] +或-表示开启或关闭显示文件连接数,如果只有单纯的+L,后面没有任何数字,则表示显示全部,如果后面有数字,只有文件连接数少于该数字的会被列出
-n 不将IP地址转换为hostname,预设是转换的
-N 显示NFS的文件
-p s 以PID作为显示的依据
-P 此参数禁止将port number转换为service name,预设为转换
+|-r [t] 控制lsof不断重复执行,t为15秒,也就是说每隔15秒再重复执行 +r 一直执行,直到没有文件被显示 -r 永远不断的执行,直到收到中断讯号(ctrl+ c)
-R 此参数增列出PID的子程序,也就是PPID
-s 列出文件的大小,若该文件没有大小,则留下空白
-u s 列出login name或UID为的程序
-v 显示lsof的版本信息

lsof命令的妙用:

当 UNIX 计算机受到入侵时,常见的情况是日志文件被删除,以掩盖攻击者的踪迹。管理错误也可能导致意外删除重要的文件,比如在清理旧日志时,意外地删除了数据库的活动事务日志。有时可以恢复这些文件,并且 lsof 可以为您提供帮助。
  当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录条目。
  # lsof | grep error_log
  httpd 2452 root 2w REG 33,2 499 3090660
  /var/log/httpd/error_log (deleted)
  httpd 2452 root 7w REG 33,2 499 3090660
  /var/log/httpd/error_log (deleted)
  ... more httpd processes ...
  在这个示例中,您可以看到 PID 2452 打开文件的文件描述符为 2(标准错误)和 7。因此,可以在 /proc/2452/fd/7 中查看相应的信息,如清单 1 所示。
  清单 1. 通过 /proc 查找删除的文件
  # cat /proc/2452/fd/7
  [Sun Apr 30 04:02:48 2006] [notice] Digest: generating secret for digest authentication
  [Sun Apr 30 04:02:48 2006] [notice] Digest: done
  [Sun Apr 30 04:02:48 2006] [notice] LDAP: Built with OpenLDAP LDAP SDK
  Linux 的优点在于,它保存了文件的名称,甚至可以告诉我们它已经被删除。在遭到破坏的系统中查找相关内容时,这是非常有用的内容,因为攻击者通常会删除日志以隐藏他们的踪迹。Solaris 并不提供这些信息。然而,我们知道 httpd 守护进程使用了 error_log 文件,所以可以使用 ps 命令找到这个 PID,然后可以查看这个守护进程打开的所有文件。
分享到:
评论

相关推荐

    linux lsof命令详解.docx

    linux lsof命令详解.docx

    linux lsof命令详解及实例

    主要介绍了linux lsof命令详解的相关资料,lsof是一个列出当前系统打开文件的工具,这里详细介绍如何使用,需要的朋友可以参考下

    AIX lsof命令详解

    通过查看打开的文件,了解更多关于系统的信息。了解应用程序打开了哪些文件或者哪个应用程序打开了特定的文件,作为系统管理员,这将使得您能够作出更好的决策

    Linux恢复删除文件的lsof命令详解

    lsof命令 lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。 在...

    Linux命令lsof详解

    lsof全名,list opened files,也就是列举系统中已经被打开的文件。用好lsof命令,对日常的linux管理非常有帮助。

    Linux lsof命令使用详解

    所以 lsof 命令不仅可以查看进程打开的文件、目录,还可以查看进程监听的端口等 socket 相关的信息。本文将介绍 lsof 命令的基本用法,本文中 demo 的演示环境为 ubuntu 18.04。 常用选项 -a 指示其它选项之间为与的...

    Centos查看端口占用情况和开启端口命令详解

    Centos查看端口占用情况命令,比如查看80端口占用情况使用如下命令:  lsof -i tcp:80 列出所有端口 netstat -ntlp  1、开启端口(以80端口为例)  方法一: /sbin/iptables -I INPUT -p tcp --dport 80 -j...

    linux 查看端口占用命令实例详解

    linux 查看端口占用命令实例详解...直接用lsof命令可以查看端口使用情况! 以上就是对linux 查看端口占用命令的讲解,如有疑问请留言,或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    详解Linux 操作系统下安装rpm包的方法步骤

    Linux操作系统搜索这个软件包就只需要输入命令apt-cache searchmyward,或者输入软件名称的一部分apt-cache searchwar,或者你不知道软件名称。 下面有一张图可以清晰地表示linux软件应用的架构关系: 在Linux启动...

    Linux文件删除后空间未释放问题详解

    当系统空间使用量过大需要清理空间或者清理某个文件时,有时会出现执行了删除命令之后磁盘空间并没有释放,很多人首次遇到该情况时会比较困惑,在考虑是不是像windows系统的回收站一样,删除只是逻辑删除到回收站...

    Python脚本实现监听服务器的思路代码详解

    content=os.popen(lsof -i:8080).read() 输出一下content看看,就是命令行执行输出的内容,看关键词webcache,但是输出的已经是文本文件了,可以直接使用find()函数去找这个“webcache”字眼,当服务崩掉的时候,...

    Linux高性能服务器编程

    16.2.1 procsysfs目录下的部分文件 16.2.2 procsysnet目录下的部分文件 16.3 gdb调试 16.3.1 用gdb调试多进程程序 16.3.2 用gdb调试多线程程序 16.4 压力测试 第17章 系统监测工具 17.1 tcpdump 17.2 lsof ...

Global site tag (gtag.js) - Google Analytics