系统粉 > 电脑问答 > 其他问答

已解决我想知道怎样查看端口被哪个程序占用

提问者:又坏又不帅7  |  浏览次  |  提问时间:2016-12-23  |  回答数量:3

我想知道怎样查看端口被哪个程序占用你好~!很高兴为你解答,以下楼主可以尝试:1)使用lsof命令lsof是一个非常强大的linux工具,她被用来查找哪些程序使用了那些文件。在linux系统下,基本上所有的东西都可以...

已有3条答案
枪在手跟你走_

枪在手跟你走_

回答数:121405  |  被采纳数:208

你好~!很高兴为你解答,以下楼主可以尝试:
1)使用lsof命令
lsof是一个非常强大的linux工具,她被用来查找哪些程序使用了那些文件。在linux系统下,基本上所有的东西都可以被当作文件来用。socket当然也是一种文件了。所以lsof可以用来查找谁用了某一个端口。具体方法:
lsof -i :port_number |grep "(LISTEN)"
-i是用来查找和网络相关的文件,":"号是必须的,它是标志你查找的是一个端口。port_number就是你要查找的端口号,譬如你要查找是否 有程序占用了oracle的监听端口1521,就可以使用lsof -i :1521 |grep "(LISTEN)"。如果有程序已经占用了,那么下面打印的第二个字段就是该程序的进程id,第一个字段是进程的名字。
如果只有losf -i :port_number可能会查到很多应用程序,但这些程序实际并没有占用你指定的端口,这些端口只是连接到本机器或者别的机器的该端口。所以要grep "(LISTEN)“,因为一个端口只可能被一个程序占用的,所以这种方法是可靠的。

2)使用netstat 命令
大家一定对这个命令比较熟悉了,可能你从没有想到用到来查找哪一个程序的占用了指定的端口。但是netstat -an 的确提供了这种功能。所以有问题了一定要想到先去查找man手册,不过说实话,某些man手册写得让中国人看不懂,那没有办法了,就googe或者 baidu一下吧。
执行man netstat命令,你会发现netstat 提供了'-p'的选项,这个选项的功能是告诉你哪个程序占用了该端口,但是她提供的形式比较古怪是以pid/process_name提供的。pid当然 是进程id了,process_name是进程的命令,中间以'/'号分隔。
和上面的原因一样,我们只查找listen的端口,netstat 给我们提供了-l的选项,这个选项不是默认的选项。
下面以1521端口来看怎么查找到该程序,我们使用下面的命令:
netstat -lnp|awk 'BEGIN{prt=":1521$"}{if ($4 ~ prt) print $0}'
在这里使用awk来匹配第4个字段的模式是为了避免误判。
2016-12-24 11:21:13
赞 12140
pgudm

pgudm

回答数:13260  |  被采纳数:2

1、查看windows所有端口进程

  首先点击开始菜单选择运行,接着在运行对话框中输入“cmd”,回车打开命令提示符窗口,然后在窗口中输入【netstat -ano】,按下回车,之后就会显示所有的端口占用情况。

  2、如果你要查询指定的端口占用的话,可以在窗口中继续输入【netstat -aon|findstr "提示的端口"】,这里的提示的端口假设为80,那么就输入命令为【netstat -aon|findstr "80"】,回车之后就可以看见列表中的PID,然后根据PID在电脑的任务管理器中查看对应的占用程序,然后将其关闭即可。

  3、然后根据查询的PID找到对应的进程,继续输入命令【tasklist|findstr "5264"】,5264就是进程ID,现在知道是哪个进程占用的就可以采取相应措施进行解决了。
2016-12-24 08:18:08
赞 1326
嬹罘妗鈤

嬹罘妗鈤

回答数:20052  |  被采纳数:3

1.在开始--运行 里面输入cmd点回车,会出现运行窗口。
2.在提示符后输入netstat -ano回车,找到tcp 80端口对应的pid,比如1484.
3.ctrl+alt+del打开任务管理器,选进程,这里有很多正在运行的程序怎么找?别急点上面的 查看--选择列--在PID(进程标示符)前面打钩。好了,下面的进程前面都有了PID号码。这时上一步找到的PID就有用了,找到1484,比如PEER.EXE什么的,结束进程吧。这时再开服务器,看WEB可以启动了!
2016-12-24 09:08:45
赞 2005
相关问答
最新其他问答
解决方法