Unix系统中哪些进程使用了哪些端口?

35

我需要找出Unix机器(HP Itanium)上哪些进程使用了哪些端口。不幸的是,lsof未安装,也无法安装它。

是否有其他替代方法?经过相当长时间的谷歌搜索仍然没有找到什么结果。


2
这取决于所使用的Unix系统。那是什么? - edomaur
类似的,在Unix和Linux中:谁在使用这个网络套接字?(2010-08-10) - Graham Perrin
9个回答

44
假设该版本的UNIX系统中包含netstat -l命令

28

由于(unix)中几乎所有东西都是文件,因此lsof列出了打开的文件...

Linux: netstat -putan或者lsof | grep TCP

OSX: lsof | grep TCP

其他Unix系统:使用lsof命令...


13
netstat -pln

编辑:仅适用于Linux,在其他UNIX系统上,netstat可能不支持所有这些选项。


10
假设这是HP-UX?那Ptools呢——你安装了吗?如果有,你可以使用“pfiles”查找应用程序正在使用的端口:

pfiles打印有关进程所有打开文件描述符的信息。如果文件描述符对应于文件,则pfiles打印fstat(2)和fcntl(2)信息。

如果文件描述符对应于套接字,则pfiles打印与套接字相关的信息,例如套接字类型、套接字族和协议族。

对于AF_INET和AF_INET6套接字族,还会打印有关对等主机的信息。

对于$(ps -ex | awk '{print $1}')中的f,请执行以下操作:echo $f; pfiles $f | grep PORTNUM; done

将PORTNUM替换为端口号。 :) 可能是子pid,但足以确定问题应用程序。


6
netstat -ln | awk '/^(tcp|udp)/ { split($4, a, /:/); print $1, a[2]}' | sort -u

该命令可以列出当前正在使用的TCP/UDP端口。您可以使用fuser -n tcpfuser -n udp命令来使用这些端口,前提是您具有root权限,并且假设fuser是GNU fuser或具有类似的选项。

如果您需要更多帮助,请告诉我。


2

我使用这个命令:

netstat -tulpn | grep LISTEN

您可以获得一个干净的输出,显示进程ID和正在侦听的端口。最初的回答。

本来也想回答同样的问题,谢谢你已经发了这个 :) - YakovL

2
尝试使用 pfiles PID 命令来显示进程的所有打开文件。

1

哪个进程在Unix中使用端口;

1. netstat -Aan | grep 端口号

root> netstat -Aan | grep 3872

output> f1000e000bb5c3b8 tcp 0 0 *.3872 . LISTEN

2. rmsock f1000e000bb5c3b8 tcpcb

output> 套接字0xf1000e000bb5c008正被进程13959354(Java)占用。

3. ps -ef | grep 13959354


0
如果您想了解所有侦听端口及其详细信息:本地地址、远程地址和状态以及进程 ID(PID),您可以在 Linux 中使用以下命令。
 netstat -tulpn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接