window与linux查看端口被占用
本文摘写自:
百度经验
https://www.cnblogs.com/ieayoio/p/5757198.html
一、windows:开始---->运行---->cmd,或者是window+R组合键,调出命令窗口
1、输入命令:netstat -ano,列出所有端口的情况。在列表中我们观察被占用的端口,比如是49157,首先找到它。
2、查看被占用端口对应的PID,输入命令:netstat -aon|findstr "49157",回车,记下最后一位数字,即PID,这里是2720。
3、继续输入tasklist|findstr "2720",回车,查看是哪个进程或者程序占用了2720端口,结果是:svchost.exe
4、或者是我们打开任务管理器,切换到进程选项卡,在PID一列查看2720对应的进程是谁,如果看不到PID这一列,如下图:
5、则我们点击查看--->选择列,将PID(进程标示符)前面的勾打上,点击确定。
6、这样我们就看到了PID这一列标识,看一下2720对应的进程是谁,如果没有,我们把下面的显示所有用户的进程前面的勾打上,就可以看到了,映像名称是svchost.exe,描述是,Windows的主进程,与上面命令查看的完全一致。
7、结束该进程:在任务管理器中选中该进程点击”结束进程“按钮,或者是在cmd的命令窗口中输入:taskkill /f /t /im Tencentdl.exe。
二、linux:查看端口占用情况
在使用Linux系统的过程中,有时候会遇到端口被占用而导致服务无法启动的情况。比如HTTP使用80端口,但当启动Apache时,却发现此端口正在使用。
这种情况大多数是由于软件冲突、或者默认端口设置不正确导致的,此时需要查看究竟哪个进程占用了端口,来决定进一步的处理方法。
1、查看端口占用情况的命令:lsof -i
这里返回了Linux当前所有打开端口的占用情况。第一段是进程,最后一列是侦听的协议、侦听的IP与端口号、状态。如果端口号是已知的常用服务(如80、21等),则会直接显示协议名称,如http、ftp、ssh等。
2、查看某一端口的占用情况: lsof -i:端口号
这里显示出21号端口正在被pure-ftpd使用,状态是listen。
3、结束占用端口的进程:killall 进程名
虽然我们不建议用这种本末倒置的方法来解决冲突问题,但某些情况下还是可以直接结束掉占用进程的(比如重启Apache时进程没有完全退出,导致重启失败)
这样,所有的pure-ftpd进程都会被结束掉。
4、也可使用命令:netstat -apn|grep <端口号>
例如:
Linux代码
[root@SonarServer1 user0]# netstat -apn|grep 80
tcp 0 0 :::80 :::* LISTEN 19408/java
找到进程号以后,再使用以下命令查看详细信息:
ps -aux|grep <进程号>