lsof的常用方法


lsof 是 Linux 中非常实用的命令,名字来源于 “List Open Files”,用来列出当前系统打开的文件(在类 Unix 系统中,一切皆文件,比如普通文件、目录、套接字、管道、设备等)。


🧰 基本语法:

lsof [选项] [文件]

📌 常用用法示例:

1. 列出所有打开的文件

lsof

2. 查看某个文件被哪个进程占用

lsof /path/to/file

3. 根据进程ID查看其打开的文件

lsof -p 12345

4. 查看某个用户打开的文件

lsof -u username

5. 查看某个端口被哪个进程占用

lsof -i :8080

6. 列出所有网络连接

lsof -i

7. 按协议过滤(如 TCP)

lsof -i tcp

8. 查找某个程序名相关的打开文件

lsof -c nginx

9. 查看删除但仍被占用的文件

lsof | grep deleted

这个常用于日志文件被 logrotate 删除但仍被进程占用的情况。


📝 常见列说明:

列名 含义
COMMAND 打开该文件的进程名
PID 进程ID
USER 拥有该进程的用户
FD 文件描述符(如 cwd, txt, mem, 0u, 1w 等)
TYPE 文件类型(如 REG, DIR, CHR, FIFO, SOCK
DEVICE 文件所在设备
SIZE/OFF 文件大小或文件偏移
NODE 索引节点号
NAME 文件名(路径)

🔐 权限说明:

运行 lsof 时需要足够权限(尤其是查看其他用户或系统进程的文件时),建议用:

sudo lsof

想我帮你分析某个具体情况?比如某端口被谁占用,或者日志文件无法删除等实际问题,我可以直接给你对应命令。

posted @ 2025-04-25 17:07  guanyubo  阅读(80)  评论(0)    收藏  举报