linux某端口被占用如何释放啊?

netstat -antp
lsof -i:5000

根本看不到进程id

阅读 19.3k
4 个回答

用一下命令查看

[root@web ~]# netstat -anp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1652/nginx: master  
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      1377/httpd          
tcp        0      0 10.1.1.14:9300          10.1.1.18:59080         ESTABLISHED 1305/java           
tcp        0      0 127.0.0.1:49800         127.0.0.1:3306          ESTABLISHED 1715/zabbix_server: 
tcp        0      0 10.1.1.14:50480         10.1.1.17:10050         TIME_WAIT   -                   
tcp        0      0 127.0.0.1:3306          127.0.0.1:49806         ESTABLISHED 1410/mysqld         
tcp        0      0 127.0.0.1:50280         127.0.0.1:3306          ESTABLISHED 1699/zabbix_server: 
tcp        0      0 127.0.0.1:3306          127.0.0.1:49800         ESTABLISHED 1410/mysqld         
tcp        0      0 127.0.0.1:3306          127.0.0.1:49804         ESTABLISHED 1410/mysqld         
tcp        0      0 10.1.1.14:33880         10.1.2.16:10050         TIME_WAIT   -                   
tcp        0      0 127.0.0.1:49806         127.0.0.1:3306          ESTABLISHED 1711/zabbix_server: 
tcp        0      0 127.0.0.1:49808         127.0.0.1:3306          ESTABLISHED 1724/zabbix_server: 
tcp        0      0 10.1.1.14:36802         10.1.1.18:10050         TIME_WAIT   -                   
tcp        0      0 127.0.0.1:49804         127.0.0.1:3306          ESTABLISHED 1708/zabbix_server: 
tcp        0      0 127.0.0.1:49802         127.0.0.1:3306          ESTABLISHED 1706/zabbix_server: 
tcp        0      0 10.1.1.14:54880         10.1.1.16:10050         TIME_WAIT   -                   
tcp        0      0 10.1.1.14:54808         10.1.1.16:10050         TIME_WAIT   -                   
tcp        0      0 127.0.0.1:3306          127.0.0.1:49808         ESTABLISHED 1410/mysqld         
tcp        0      0 127.0.0.1:3306          127.0.0.1:49802         ESTABLISHED 1410/mysqld         
tcp        0      0 127.0.0.1:3306          127.0.0.1:50280         ESTABLISHED 1410/mysqld         
raw        0    768 0.0.0.0:1               0.0.0.0:*               7           23580/fping        

例如:1652/nginx: master,其中“1652”就是PID,“nginx: master”是程序名称。

用以下命令kill掉即可:

[root@web ~]# kill -9 1652

如果你知道这是什么程序,建议使用程序自带的命令停止服务,不要用kill粗暴地结束掉。

端口打开因为你启动了相关的服务,只需要关掉这个服务就好了
找到这个服务然后kill掉 或者shut down

这个是因为系统需要一定的时间去释放端口,例如当编写flask服务时如果没有设置为DEBUG模式会经常需要CTRL+C这样会导致5000端口无法立即释放,再次启动服务就会报端口已被占用。如果是自己编写的socket服务可以增加一行代码使系统能在服务停止后立即释放端口。

socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题