Linux调试神器lsof:掌握这些命令,让你解决大多数的系统问题!

你是否遇到过这些困境?

  • 服务器突然卡死却找不到罪魁祸首?
  • 端口被神秘进程占用却无从下手?
  • 想监控某个文件的实时访问状态却束手无策?

今天就带你解锁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
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
是你的地理老师的头像 - 鹿快
评论 共3条

请登录后发表评论