我希望能够找出哪个进程当前正在使用Linux中的某个端口。有什么办法吗?

评论

在Windows上,命令为:netstat -anb

#1 楼

您有两种选择:

lsof -i tcp:80


将为您提供使用tcp端口80的进程的列表。或者,


sudo netstat -nlp


将为您提供所有开放的网络连接。

评论


lsof -i | grep {用户名}也非常有用,即lsof -i | grep apache

–LawrenceC
2011年10月30日,下午3:20

对于任何想知道的人,-n:不解析名称,-l:显示监听服务器套接字,-p:显示套接字的PID /程序名称。

– yellavon
2014年5月12日15:18

我通常将-P添加到lsof -i tcp:$ PORTNUMBER中,以使该端口以数字形式返回给我。

–js。
15年6月23日在8:42

#2 楼

netstat -lp


评论


在Mac上,您必须向-p添加协议选项。就像这样:netstat -lp tcp。

–vrish88
2010年5月25日下午14:59

#3 楼

我正在使用既没有netstat也没有lsof的“ CentOS 7 minimal”。但是许多Linux发行版都有套接字统计信息命令(即ss)。这里是一个执行示例:

# ss -tanp | grep 6379
LISTEN   0    128  127.0.0.1:6379   *:*   users:(("redis-server",pid=2531,fd=4))


#4 楼

在Linux中,要查找在端口上运行的进程,请执行以下操作:

lsof -i :<port_number>


示例:

lsof -i :8080


评论


感谢您的帮助。已接受的答案中提到了此命令。如果您有新内容,请编辑您的帖子。

– Ben N
16年1月6日,0:22

#5 楼

另外,如果您要列出正在运行的正在运行TCP的进程,则可以使用
sudo netstat -tnp

    sudo to get processes you don't own
    -t for TCP
    -n for numeric
    -p for pid

获得正在运行UDP的进程,将-t替换为-u
sudo netstat -unp