您的位置:

深入解析Linux工具lsof

一、lsof介绍

lsof是List Open Files的缩写,是一款功能强大的系统管理员工具,用于列出当前系统打开的所有文件及进程信息。它能够监视系统中所有文件的状态,包括哪些文件被哪些进程打开,哪些用户正在使用文件,哪些文件被遗留在磁盘中,还可以查看网络连接情况等。

在Linux系统中,文件被看作是文件描述符(file descriptor)。每个进程可以通过文件描述符读取或写入文件。因此,通过分析进程的文件描述符可以获得对系统资源使用的整体情况。

二、常用参数

1. -p参数:输入指定进程信息。

2. -u参数:输入指定用户信息。

3. -c参数:输入指定程序名信息。

4. -d参数:输入指定文件号信息。

5. -i参数:输入指定各种网络状态信息(如TCP, UDP等)。

6. -t参数:输入指定进程号信息。

//例:查看进程号为1234的进程所打开的文件
lsof -p 1234

三、常用输出信息

1. COMMAND:进程的名称。

2. PID:进程的ID号。

3. USER:进程的所有者。

4. FD:文件描述符,应用程序通过文件描述符读写文件,stdin、stdout、stderr分别用0、1、2表示。

5. TYPE:文件类型,如DIR(目录)、CHR(字符设备)、REG(常规文件)等。

6. DEVICE:文件所在的磁盘设备名。

7. SIZE:文件的大小。

8. NODE:文件的索引节点(Inode)编号。

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

//例:查看所有以/home/abc/开头的打开文件
lsof /home/abc/*

四、进程连接网络的情况

1. TCP:进程连接TCP协议的端口。

2. UDP:进程连接UDP协议的端口。

3. RAW:进程连接IP协议的原始套接字。

4. UNIX:进程连接Unix域套接字。

//例:查看所有连接本机22端口的进程
lsof -i :22

五、lsof引申出的应用

1. 查找被锁住的文件

lsof | grep DEL | awk '{print $9}' | xargs ls -l

2. 查找正在写文件的进程

lsof -r1 /path/to/file

3. 查看目录和子目录中哪些文件被哪些进程打开

lsof +D /path/to/dir

六、总结

lsof是一款功能强大的工具,可以监视系统中所有文件的状态,并能查看网络连接情况等。在日常运维和故障排除中,lsof能够帮助管理员轻松定位文件和进程信息,提升系统管理效率。