我尝试了
netstat -a | egrep 'Proto|LISTEN'
,但我想更具体地列出端口号。#1 楼
netstat -pln
-l
将列出监听端口,-p
将显示进程,-n
将显示端口号而不是名称。添加-t
仅显示TCP端口。#2 楼
lsof -i -P
请检查手册页中的
lsof
,因为不乏选项。 -P
列出端口号,而不是/etc/services
以root身份运行的名称,不过,这将为您提供所有活动网络连接及其状态(侦听,已建立等)的列表。评论
这应该是正确的答案。默认情况下未安装Netstat
–何塞
18/12/21在14:04
#3 楼
几乎每个人都想要的(TCP和UDP)是netstat -tunlp
。我每天,甚至每小时都使用它。 “ lsof” hack更具可移植性(也可在Solaris上使用),但是在Debian上,它不是必不可少的软件包,必须安装它。
评论
是的,并通过sudo运行它。
–马丁·海默斯(Martijn Heemels)
2012年2月7日在23:09
我的朋友教我记住该命令,并使用花名netstat -tulpen标记e提供了更多信息。
– Deele
2012-12-15 14:37
而现在,在2018年,我刚购买的Debian盒子没有netstat,但确实有lsof。 :)
–詹森
18年11月11日在20:58
#4 楼
我是netstat -ntlp
和lsof -i
的忠实粉丝,都已经提到过。对我来说,一个新命令是ss。
调用类似于:
ss -l
最好有命令和标志选项。
评论
选项特别好,因为mongo docker容器(可能还有许多其他容器)具有ss而不是netstat或lsof
–oon
16年11月14日在1:23
我开始将其用作面试问题。大概问了40个不同的人。到目前为止,还没有人提到ss。我像OP一样询问,然后如果他们回答,我说:“好吧,我拿走X,现在该怎么做。”直到想法用尽。
– dmourati
17年6月29日在4:14
#5 楼
您可以执行以下操作:netstat -an | egrep 'Proto|LISTEN'
,或者简单地:
netstat -anl
,这将为您提供所有监听插座系统。
评论
这将是最佳解决方案(其中“最佳”定义为“可在最广泛的系统上运行”(BSD,Linux,AIX,Solaris,我相信是HP-UX))
–voretaq7
2012年2月6日在22:31
#6 楼
侦听端口与从外部打开的端口不同。您需要考虑防火墙。如果您尝试从另一台计算机尝试nmap
之类的程序,那么您将能够看到打开的端口未被防火墙阻止。 #7 楼
TechRepulic有一篇不错的文章,您可以在这里找到。它具有与上面列出的命令类似的命令,但也有一些变化。我也强烈建议使用nmap对有问题的计算机进行端口扫描,以便您可以从外部角度查看哪些端口已打开并正在监听。评论
你能告诉我为什么这被否决了吗?正如我所提供的那样,上面提供了许多解决方案的链接,这些解决方案已被批准,同时也提供了进行外部扫描的不同角度。谢谢。
–埃里克
2012年2月6日19:10
我没有拒绝投票,但是在像大多数堆栈交换这样的serverfault上,我们通常希望您将答案放在这里,而不仅仅是到其他地方的链接。链接会随着时间的流逝而消失,但是当链接消失时,我们希望SF上的内容仍然有价值。
– Zoredache
2012年2月6日在22:55
上面文章链接中仅有的代码行是sudo nmap -T4 -A -v 192.168.1.1/24其他所有操作都可以执行此操作-无需任何详细信息即可执行操作...就像阅读书的封底一样-很多没有肉的单词。
– KingsInnerSoul
16年4月1日在14:37
#8 楼
我更喜欢使用:netstat -antp
lsof -i
netstat -lptu
netstat -tulpn
评论
为了使-p正常工作,您需要以root身份运行此命令,因此应使用sudo netstat -tpln,否则,除非您的进程正在侦听给定端口的用户,否则process列将不会特别有用。
– cjc
2012年2月6日18:21