你是否遇到过这些困境?
- 服务器突然卡死却找不到罪魁祸首?
- 端口被神秘进程占用却无从下手?
- 想监控某个文件的实时访问状态却束手无策?
今天就带你解锁Linux调试界的”瑞士军刀”——lsof(List Open Files)!这个能查看系统所有打开文件的超级工具,堪称运维人员的X光机!✨
一、lsof基础命令速成(新手必看)
1️⃣ 查看所有打开的文件
sudo lsof
效果:瞬间列出所有进程打开的文件(包括设备、网络连接等)
小贴士:记得加sudo!不然会提示权限不足哦~
2️⃣ 按进程ID过滤
lsof -p 1234
用法:追踪特定进程(如PID=1234)的所有文件操作
场景:当某个服务异常时,快速定位其资源占用情况
3️⃣ 按用户过滤
lsof -u david
用法:查看指定用户(如david)打开的所有文件
应用:排查用户级资源泄露问题
️ 二、进阶技巧(老鸟必备)
4️⃣ 查找占用端口的进程
lsof -i :8080
场景:当启动服务提示端口被占用时,直接定位罪魁祸首!
✅ 示例输出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1234 root 6u IPv4 12345 0t0 TCP *:8080 (LISTEN)
5️⃣ 监控文件变化
lsof +D /var/log/
用法:实时监控指定目录(如日志目录)的文件访问
⚡ 结合tail -f使用,打造日志分析黄金组合!
三、实战案例(救命级操作)
案例1:服务器无法重启?
lsof /dev/sda
缘由:某些进程可能正在使用磁盘设备
✅ 解决方案:找到相关PID后kill掉进程
案例2:MySQL连接数异常?
lsof -c mysqld
效果:直接列出MySQL进程的所有文件句柄
优化方向:发现连接数超过配置限制时,及时调整参数
四、冷门但强劲的组合技
# 查看被删除但仍被占用的文件
lsof | grep deleted
# 查看所有网络连接
lsof -i
# 查看某个文件被哪些进程占用
lsof /path/to/file
这些命令在排查僵尸文件、网络故障时堪称神器!
结语:lsof的终极奥义
输入 man lsof 查看完整手册,探索更多高级玩法吧!
从今天开始,把lsof加入你的日常调试工具箱!遇到问题时,别再盲目重启服务,用lsof精准定位,效率提升数倍!
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END











- 最新
- 最热
只看作者