1. 问题描述
某日,Z同学在调试程序:
1)程序名称: DataImport
2)监听端口:1998
刚开始调试的时候都挺顺利,但是在一顿任意捣鼓各种非正常关闭程序之后,再次重新启动程序时,程序异常退出。
并提示错误信息 “what(): bind: Address already in use” ,表示地址已经被使用,监听绑定失败。
2. 逐一排查
1.1 使用 ps 命令查看是否有其他进程在运行
Z同学使用 “ps -ef | grep DataImport ” 查看是否开启了多个 DataImport 进程,端口是否被其他 DataImport 进程占用:
从上图结果看到,这种情况排除,不存在开启多个 DataImport 进程的问题;继续排查+1。
1.2 使用 netstat -tulpn 命令查看端口使用情况
Z同学使用 “netstat -tulpn ” 查看系统端口使用情况,查看 1998 端口在哪里被占用:
从上图结果看到,并未找到 1998 端口被占用的信息;继续排查+2。
1.3 使用 lsof 命令查看端口使用情况
Z同学使用 “lsof -i:1998” 查看系统端口使用情况,查看 1998 端口在哪里被占用:
从上图结果看到,1998 端口被进程ID为 66252 的进程在占用,并且建立的连接状态处于 ESTABLISHED。
Z同学执行 “kill 66252” ,问题解决。