Linux运维必备!lsof命令从入门到精通

内容分享4天前发布
0 1 0

Linux运维必备!lsof命令从入门到精通

一、lsof 是什么?为什么运维都离不开它?

在 Linux 世界里,”万物皆文件”—— 普通文件、目录、网络连接甚至设备,都以文件形式存在。lsof(List Open Files)就是一款能列出系统中所有 “打开文件” 的强劲工具,堪称运维排查问题的 “瑞士军刀”。

它能帮你解决这些头疼问题:

  • 端口被占用导致服务启动失败
  • 文件删了但磁盘空间没释放
  • 想知道某个进程在读写哪些文件
  • 排查谁在偷偷访问敏感目录

二、先搞定基础:安装与核心字段解读

1. 快速安装(若系统未预装)

# Debian/Ubuntu系统

sudo apt update && sudo apt install lsof

# CentOS/RHEL系统

sudo yum install lsof

提示:多数 Linux 发行版默认预装 lsof,直接输入lsof即可使用。

2. 看懂输出才有用!核心字段解析

执行lsof后会看到多列信息,关键字段含义如下:

字段

说明

示例

COMMAND

进程名称

nginx

PID

进程 ID

12345

USER

进程所属用户

www-data

FD

文件描述符(cwd = 工作目录,txt = 程序文件)

4u(u = 读写模式)

TYPE

文件类型(REG = 普通文件,IPv4 = 网络连接)

TCP

NAME

文件路径 / 网络地址

*:80(监听 80 端口)

三、手把手教:lsof 高频用法速查表

按使用场景分类,这些命令记得收藏!

1. 查进程:看透程序在忙啥

  • 查看指定进程打开的文件(以 nginx 为例):

lsof -p $(pgrep -f nginx) # pgrep获取nginx的PID

  • 查看某用户的所有进程文件(以 apache 为例):

lsof -u apache

2. 查网络:端口 / 连接全掌握

  • 查看 80 端口被哪个进程占用(排查 HTTP 服务冲突):

lsof -i :80 # 输出含LISTEN表明正在监听

  • 列出所有 TCP/UDP 连接:

lsof -i TCP # 只看TCP

lsof -i UDP # 只看UDP

3. 查文件:找到 “隐形” 的资源

  • 查看谁在使用某个文件(如日志文件):

lsof /var/log/syslog

  • 找出被删除但仍占用空间的 “幽灵文件”:

lsof +L1 # 链接数为0的文件,删了没释放

四、实战为王:lsof 最佳实践 3 大场景

1. 救急!磁盘满了但找不到大文件

场景:df 显示磁盘满,但 du 查不到大文件?大致率是文件删了没释放!

# 步骤1:找到被删除的大文件

lsof | grep deleted | awk '{print $2,$9,$7}' # 显示PID、路径、大小

# 步骤2:重启对应进程释放空间,或临时清理(需root)

kill -HUP 12345 # 12345为占用文件的PID

2. 排障!服务启动提示 “端口被占用”

场景:启动 Tomcat 报错 “8080 端口被占用”

# 一步定位占用进程

lsof -i :8080

# 输出示例:COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

# java 6789 root 4u IPv4 12345 0t0 TCP *:8080 (LISTEN)

# 杀死进程:kill -9 6789

3. 恢复!误删日志文件能救回

场景:不小心删了 MySQL 日志,进程还在运行就能恢复!

# 步骤1:找到占用日志的进程

lsof | grep /var/log/mysql.log | grep deleted

# 步骤2:从/proc目录复制文件(PID替换为实际进程ID)

cp /proc/12345/fd/3 /var/log/mysql.log # 3是FD列的文件描述符

五、避坑指南与效率技巧

  1. 权限问题:普通用户只能看自己的进程,查系统资源需加sudo。
  2. 减少输出:结合grep/awk过滤,列如找 java 进程的日志文件:

lsof -p $(pgrep java) | grep '.log$'

  1. 性能注意:大型服务器上lsof可能耗资源,尽量加过滤条件(如-i/-p)。

总结

lsof 的强劲之处在于能穿透 “文件” 的表象,直抵系统资源的核心。从端口排查到文件恢复,掌握这些技巧能让你运维效率翻倍!赶紧收藏本文,下次遇到问题直接对照实操~

你平时用 lsof 解决过哪些问题?欢迎在评论区分享你的实战经验!

© 版权声明

相关文章

1 条评论

您必须登录才能参与评论!
立即登录
  • 头像
    迷失自我 读者

    收藏了,感谢分享

    无记录