开发问题(一)在windows和linux端口占用问题

前言

  今天在MyEclipse中使用tomcat发现tomcat端口8080竟然被占用了,所以就找了一下解决办法共参考!

  在网络程序的调试过程中,经常发生一些出乎意料的事情,比如创建一个TCP服务失败,这时候往往需要查看系统的网络情况,最常用的网络抓包当然非WireShark模式。但往往很多时候只需要查看某个端口的使用情况,

  它到底被那个进程(对应PID)占用了,或者你还需要把它Kill掉。

  如果你在Windows操作系统,你可以使用netstat命令来查询PID,然后可以打开任务管理器,查看这个PID对应的进程名;如果PID没有显示,菜单——>查看——>选择列——>选中PID即可;得知进程后,我们可以将进程杀掉。

  下面我简单描述一下我所了解的在Windows和Linux系统下处理方式。 

一、在windows平台中

  在windows控制台窗口下执行:     netstat -nao | findstr "8080"     TCP 127.0.0.1:8080 0.0.0.0:0 LISTENING 208

  你看到是PID为208的进程占用了8080端口,如果进一步你想知道它的进程名称,你可以使用如下命令:

    tasklist | findstr "208" 

  如果你想杀死这个进程,你当然可以用前面描述的那种方法,在任务管理器里把它KILL了,但如果你喜欢高效一点,那么用taskkill命令就可以了:

    taskkill /pid 208

  如果你想强制杀死进程加一个-F参数

    taskkill -F  /pid 208

二、在LInux平台中

  netstat -pan | grep 8080 

  如果你稍微仔细一点,你会发现,用的都是netsta命令,事实上,netstat是一个比较通用的网络统计命令,几乎适用于所有现在流行的操作系统,无论是Linux,Window,还是其他Unix,或者Unix-like操作系统,而且用法基本一致。 

  格式:

    netstat [-a] [-e] [-n] [-o] [-p Protocol] [-b] [-r] [-s] [-v] [Interval]

  参数说明:

-a 显示所有连接和监听端口。
-n 以数字形式显示地址和端口号。
-o 显示与每个连接相关的所属进程 ID。 
-p 在Windows系统中,该选项用于指定默认情况的子集。proto 显示 proto 指定的协议的连接;proto 可以是下列协议之一: TCP、UDP、TCPv6 或 UDPv6。
如果与 -s 选项一起使用以显示按协议统计信息,proto 可以是下列协议之一:
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。

-b 显示包含于创建每个连接或监听端口的可执行组件。在某些情况下已知可执行组件拥有多个独立组件,并且在这些情况下; 包含于创建连接或监听端口的组件序列被显示。这种情况下,可执行组件名在底部的 [] 中,顶部是其调用的组件,等等,直到 TCP/IP 部分。注意此选项
可能需要很长时间,如果没有足够权限可能失败。
-e 显示以太网统计信息。此选项可以与 -s选项组合使用。
-s 显示按协议统计信息。默认地,显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息。

-r 显示路由表。
-v 与 -b 选项一起使用时将显示包含于为所有可执行组件创建连接或监听端口的组件。

  解决办法:   

    1)查找被占用的端口:

      netstat -tln

      netstat -tln | grep 8080 

    2)查看端口属于哪个程序

      lsof -i :8080

    3)杀掉占用端口的进程:

      kill -9 进程ID

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏电脑高手

如何通过路由器来控制上网

这种共享上网的方法一般如下:(光纤)电话线--语音分离器--(光纤猫)ADSL猫--宽带路由器-交换机-集线器-电脑

45213
来自专栏云计算教程系列

如何在Debian 9上安装Linux,Apache,MariaDB,PHP(LAMP)堆栈

“LAMP”堆栈是一组开源软件,通常安装在一起以使服务器能够托管动态网站和Web应用程序。这个术语实际上是一个缩写,代表L inux操作系统,带有A pache...

3643
来自专栏乐沙弥的世界

MySQL从库选项log-slave-updates未启用引发的异常

    最近核查一个基于从库复制某张特定的表到另外一个主库调整,未配置log-slave-updates导致表无法正常同步。我们的配置文件中使用了replica...

641
来自专栏云计算教程系列

如何在Ubuntu 18.04上安装和配置Postfix

Postfix是一种流行的开源邮件传输代理(MTA),可用于在Linux系统上路由和传递电子邮件。据估计,互联网上约有25%的公共邮件服务器运行Postfix。

3001
来自专栏陈树义

Java并发编程:线程的基本状态

一、线程的基本状态 线程基本上有5种状态,分别是:NEW、Runnable、Running、Blocked、Dead。 1)新建状态(New) 当线程对象对创建...

3487
来自专栏大闲人柴毛毛

Linux用户身份切换

为什么需要切换用户身份? 在日常工作中,尽量使用普通用户账号操作,当需要root权限的时候再通过身份切换的方式切换至root管理员,这样能保证系统的安全性。使...

4317
来自专栏逸鹏说道

安装和搭建基于netcore的demo

系统CentOS安装:   网上很多教程,很详细,我就不再赘述了。在安装过程中,需要注意的是设置时区、个人账户密码、root密码(一定要注意,否则后续很麻烦)、...

3679
来自专栏云计算教程系列

如何在Ubuntu 16.04上安装Bro

Bro是一个开源网络分析框架和安全监控应用程序。它将OSSEC和osquery的一些最佳功能集成到一个包中。

2185
来自专栏菜鸟程序员

Ubuntu防火墙安装和配置

2054
来自专栏决胜机器学习

《Redis设计与实现》读书笔记(二十五) ——Redis主从复制具体过程

《Redis设计与实现》读书笔记(二十五) ——Redis主从复制具体过程 (原创内容,转载请注明来源,谢谢) 一、PSYNC命令执行过程 ...

3705

扫码关注云+社区

领取腾讯云代金券