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
想我帮你分析某个具体情况?比如某端口被谁占用,或者日志文件无法删除等实际问题,我可以直接给你对应命令。
Do not communicate by sharing memory; instead, share memory by communicating.

浙公网安备 33010602011771号