Linux进阶命令-lsof

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

Linux进阶命令-lsof

在上一章节中,我们详细讲解了linux系统自带的日志服务,帮助大家对其有了初步的了解。接下来,我们将深入探讨一些进阶命令,这些命令涵盖了系统操作、系统查看和处理、Linux文本处理、逻辑判断、重定向、网络传输、服务启动、文件句柄等方面。通过学习这些操作,您将能够更加灵活地操作Linux系统。具体内容将分为以下章节进行讲解:

Linux进阶命令-echo&date&alias

Linux进阶命令-top

Linux进阶命令-ps&kill

Linux进阶命令-sort&wc

Linux进阶命令-sed&split

Linux进阶命令-awk&uniq

Linux进阶命令-逻辑或&逻辑与

Linux进阶命令-重定向

Linux进阶命令-scp

Linux进阶命令-rsync

Linux进阶命令-rsync-daemon

Linux进阶命令-nohup&screen

Linux进阶命令-lsof(本章节)

Linux进阶命令-小结

在介绍Linux入门-Linux目录时,我们提到过,Linux系统中一切皆文件;在讲解Linux基础软件-库文件时,我们也提到,库文件实际上是系统自带的一些函数的集合,普通应用程序通过调用这些函数来实现对文件的增删查改等操作。同样,在Linux中有一个命令lsof,可以用来显示所有打开的文件。这个命令与ps命令类似,ps用于查看所有进程,而lsof则用于查看所有打开的文件。

lsof

lsof是一个在类unix操作系统中用于列出打开文件的工具。这个命令的名字源自“list open files”的缩写。在Unix和类Unix系统中,文件不仅仅指的是磁盘上的文件,还包括各种类型的文件,如目录、设备、管道、套接字等。使用lsof命令,您可以查看哪些进程打开了哪些文件,以及这些文件的状态。

在最小化安装的情况下,lsof命令通常不会自带,需要手动安装。

yum -y install lsof

常用选项和用法

  1. 列出所有打开的文件
lsof

这个命令将列出系统中所有打开的文件和相关的进程信息,但由于信息量巨大,通常不具备参考意义,除非用于过滤和搜索。

  1. 根据文件名查找
lsof /path/to/file

显示哪个进程打开了指定路径的文件。

  1. 根据进程ID查找
lsof -p <pid>

显示指定进程ID打开的所有文件。在实际应用中,如果某些应用程序找不到它们使用的配置或日志文件,可以通过这种方式找到它们所使用的配置或日志文件。

  1. 根据用户查找
lsof -u <username>

显示由指定用户打开的所有文件。

  1. 根据端口查找
lsof -i :<port>

显示所有使用指定端口的网络连接和进程,可以替代netstat和ss命令的部分功能。

  1. 查看网络文件
lsof -i

列出所有网络连接和相关的进程,相当于ss和netstat命令。

  1. 查看目录文件
lsof +D /usr

列出该目录下被打开的文件。

  1. 检查是否有删除的文件仍然被打开
lsof | grep '(deleted)'

显示那些被删除的文件仍然被进程打开,因此某些未确定的大文件可以通过Linux进阶命令-重定向的方式来释放空间。

COMMAND:启动文件的命令名。PID:进程ID。TID:线程ID(对于多线程进程)。USER:打开文件的用户。FD:文件描述符,指示文件在进程中的访问方式。TYPE:文件类型(如REG表示常规文件,DIR表示目录,CHR表示字符设备等)。DEVICE:设备号,标识文件所在的设备。SIZE/OFF:文件大小或偏移量。NODE:文件的节点号。NAME:文件的名称或路径。

总结

lsof最常用的可能是找出删除文件而空间未释放的问题,也就是第八个用法。当然,这个时候文件仍然可以恢复,具体内容将在讲解proc时详细说明。

Linux进阶命令-lsof

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享