当前位置:首页 > Centos > 正文

Centos lsof命令详解(手把手教你列出打开文件)

在 Linux 系统管理中,尤其是 Centos 环境下,我们经常会遇到需要查看某个进程打开了哪些文件、端口或目录的情况。这时候,lsof 命令就派上大用场了!本文将带你从零开始,轻松掌握 Centos lsof命令 的基本用法,让你也能像老手一样列出打开文件

Centos lsof命令详解(手把手教你列出打开文件) lsof命令 列出打开文件 lsof使用教程 Linux查看进程打开文件 第1张

什么是 lsof?

lsof(List Open Files)是一个强大的命令行工具,用于列出当前系统中被进程打开的文件。在 Linux 中,“一切皆文件”,因此这里的“文件”不仅包括普通文件、目录,还包括网络连接、设备、管道、套接字等。

通过 lsof,你可以:

  • 查看某个进程打开了哪些文件
  • 找出哪个进程占用了某个端口
  • 定位被删除但仍被占用的文件(导致磁盘空间未释放)
  • 排查系统异常或安全问题

安装 lsof(如未安装)

在大多数 CentOS 系统中,lsof 默认未安装。你可以通过以下命令安装:

sudo yum install -y lsof

基础用法:列出所有打开的文件

最简单的用法就是直接运行 lsof,它会列出系统中所有被打开的文件。但注意:输出可能非常长!

lsof

输出示例(部分):

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF    NODE NAMEsystemd     1   root  cwd    DIR  253,0     4096       2 /systemd     1   root  rtd    DIR  253,0     4096       2 /sshd       987   root    3u  IPv4  12345      0t0     TCP *:ssh (LISTEN)nginx     1234   root    6u  IPv4  67890      0t0     TCP *:http (LISTEN)

各列含义简要说明:

  • COMMAND:进程名
  • PID:进程 ID
  • USER:运行该进程的用户
  • FD:文件描述符(如 cwd=当前工作目录,txt=程序代码,3u=读写文件描述符)
  • NAME:打开的文件或网络地址

常用实用技巧

1. 查看特定进程打开的文件

lsof -p 1234

其中 1234 是进程 PID。你也可以用进程名:

lsof -c nginx

2. 查看某个文件被谁打开

lsof /var/log/messages

3. 查看监听的网络端口(类似 netstat)

lsof -i

只查看 TCP 80 端口:

lsof -i :80

4. 找出已删除但仍被占用的文件(释放磁盘空间)

有时候你删除了一个大日志文件,但磁盘空间没释放?很可能是因为进程还在写入它!用下面命令查找:

lsof | grep deleted

找到对应 PID 后,重启该服务即可释放空间。

总结

通过本篇 lsof使用教程,你应该已经掌握了如何在 CentOS 系统中使用 lsof 命令来列出打开文件。无论是排查端口冲突、定位文件占用,还是日常运维,lsof 都是你不可或缺的利器。

记住几个核心命令:

  • lsof -i :端口号 → 查看谁在用这个端口
  • lsof /路径/文件 → 查看谁在用这个文件
  • lsof -p PID → 查看某进程打开了什么

希望这篇面向小白的 Linux查看进程打开文件 教程对你有帮助!快去你的 CentOS 服务器上试试吧!