HCRM博客

如何在CentOS系统中使用lsof命令?

CentOS系统下lsof命令详解

一、什么是lsof?

lsof(list open files)是一个用于列出当前系统中所有打开文件的命令,在Linux环境下,几乎所有的事物都可以被视为文件,包括网络连接和硬件设备,因此lsof的功能非常强大,它可以帮助系统管理员监测进程活动,诊断系统问题。

如何在CentOS系统中使用lsof命令?-图1
(图片来源网络,侵权删除)

二、安装lsof

在CentOS系统中,可以通过以下命令来安装lsof:

yum install lsof

输入y确认安装即可。

三、lsof的基本用法

执行lsof命令后,会显示系统中所有被打开的文件及其相关信息,以下是一些常用的lsof命令选项:

1、查看所有打开的文件

如何在CentOS系统中使用lsof命令?-图2
(图片来源网络,侵权删除)
   lsof

2、查看特定端口的使用情况

   lsof i :8080

这将显示使用8080端口的进程信息

3、查看某个用户打开的文件

   lsof u username

要查看用户root打开的文件,可以使用:

   lsof u root

4、查看特定进程打开的文件

   lsof p PID

要查看进程号为1234的进程打开的文件,可以使用:

如何在CentOS系统中使用lsof命令?-图3
(图片来源网络,侵权删除)
   lsof p 1234

5、查看特定文件被哪些进程打开

   lsof /path/to/file

要查看某个文件被哪些进程打开,可以使用:

   lsof /etc/passwd

6、查看特定类型的网络连接

   lsof iTCP:80

这将显示所有使用TCP协议且端口为80的网络连接。

四、lsof输出结果解释

执行lsof命令后,会显示类似如下的信息:

COMMAND    PID  TID         USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd      1              root  cwd       DIR              253,0       4096     2 /
systemd      1              root  rtd       DIR              253,0       4096     2 /
systemd      1              root  txt       REG              253,0  1632776     308905 /usr/lib/systemd/systemd
...

各列的含义如下:

COMMAND:进程的名称。

PID:进程标识符。

TID:线程标识符。

USER:进程所有者。

FD:文件描述符,应用程序通过文件描述符识别该文件,如cwd、txt等。

TYPE:文件类型,如DIR、REG等。

DEVICE:指定磁盘的名称。

SIZE:文件的大小。

NODE:索引节点(文件在磁盘上的标识)。

NAME:打开文件的确切名称。

五、lsof的高级用法

1、递归查看某个目录下的文件信息

   lsof +D /path/to/directory

这会列出指定目录及其子目录下被打开的所有文件。

2、列出某个用户组打开的文件

   lsof g groupname

要查看GID为5555的用户组打开的文件,可以使用:

   lsof g 5555

3、根据文件描述符范围列出文件信息

   lsof d 23

这会列出文件描述符在2到3之间的文件。

4、列出所有网络文件系统

   lsof N

这将显示所有通过网络文件系统(NFS)打开的文件。

5、重复执行lsof命令直到中断

   lsof r 10

这将每隔10重复执行一次lsof命令,直到用户中断。

六、FAQs

1、为什么普通用户执行lsof命令时显示"permission denied"?

答:因为lsof需要访问核心内存和各种文件,这些操作通常需要超级用户权限,普通用户执行lsof命令时会显示"permission denied",可以通过在命令前加上sudo来提升权限,

   sudo lsof

2、如何卸载lsof?

答:如果需要卸载lsof,可以使用以下命令:

   yum remove lsof

这将从系统中移除lsof工具。

分享:
扫描分享到社交APP
上一篇
下一篇