1. netstat命令概述netstatnetwork statistics是Linux系统中用于监控网络连接状态的经典命令行工具。作为一名运维工程师我几乎每天都会使用这个命令来排查网络问题。它可以显示路由表、实际网络连接、网络接口统计等信息是网络故障排查的瑞士军刀。注意在新版Linux发行版中netstat已被标记为deprecated建议使用ss命令替代。但由于其简单易用目前仍被广泛使用。2. 核心功能解析2.1 基本语法结构netstat命令的基本语法格式如下netstat [选项]常用选项组合netstat -tulnp2.2 主要功能模块活动连接监控显示所有TCP/UDP连接显示监听端口显示连接状态路由表信息显示内核路由表显示接口MTU值接口统计显示网络接口收发数据包统计显示错误包和丢包统计3. 实战应用场景3.1 查看所有活动连接netstat -a输出示例Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 192.168.1.100:22 192.168.1.50:54234 ESTABLISHED3.2 仅显示TCP连接netstat -at3.3 仅显示UDP连接netstat -au3.4 显示监听端口netstat -l3.5 显示进程ID和程序名netstat -p3.6 组合使用示例查看所有TCP监听端口及对应进程netstat -tlnp4. 输出字段详解4.1 连接状态说明状态说明LISTEN监听状态ESTABLISHED已建立连接SYN_SENT主动发起连接SYN_RECV接收到SYN请求FIN_WAIT1等待远程TCP连接中断请求FIN_WAIT2从远程TCP等待连接中断请求TIME_WAIT等待足够时间确保远程TCP接收到中断确认4.2 其他重要字段Recv-Q接收队列Send-Q发送队列Local Address本地地址和端口Foreign Address远程地址和端口5. 高级应用技巧5.1 持续监控网络状态watch -n 1 netstat -tulnp5.2 统计各种状态的连接数netstat -an | awk /^tcp/ {S[$NF]} END {for(a in S) print a, S[a]}5.3 查找异常连接netstat -anp | grep -v 0.0.0.0 | grep -v 127.0.0.15.4 结合grep过滤结果netstat -tulnp | grep nginx6. 常见问题排查6.1 端口被占用问题netstat -tulnp | grep 806.2 连接数过多问题netstat -nat | grep ESTABLISHED | wc -l6.3 查看TIME_WAIT状态连接netstat -nat | grep TIME_WAIT7. 替代方案ss命令虽然netstat仍然可用但建议逐渐过渡到ss命令ss -tulnpss命令优势速度更快显示信息更详细支持更多过滤选项8. 实际案例分享8.1 案例一Web服务器端口冲突症状Nginx启动失败报端口80被占用排查步骤netstat -tulnp | grep 80发现是Apache占用了80端口通过停止Apache或修改Nginx配置解决。8.2 案例二数据库连接泄露症状MySQL连接数持续增长排查步骤watch -n 1 netstat -an | grep 3306 | wc -l发现是应用代码没有正确关闭数据库连接修复代码后问题解决。9. 性能优化建议对于高并发服务器定期检查TIME_WAIT状态连接数监控ESTABLISHED连接数防止超过系统限制关注Recv-Q和Send-Q队列长度避免积压10. 安全注意事项不要在生产环境使用root权限运行netstat敏感信息如数据库连接可能会在输出中暴露定期检查异常IP的连接netstat命令虽然简单但熟练掌握后可以解决大部分网络连接问题。建议将常用命令保存为脚本或alias提高工作效率。
阅读完成 · 觉得有帮助?