查找使用出站端口的进程

查找使用出站端口的进程

我有一个服务器正在监听端口 7060,而其他本地进程正在连接该服务器。我如何找到其他进程的 PID?

$ sudo netstat -plant |grep 7060
tcp6       0   0 :::7060            :::*             LISTEN      7085/java           
tcp6       0   0 127.0.0.1:35142    127.0.0.1:7060   TIME_WAIT   -                   

什么进程正在使用端口 35142?netstat这里显示没有进程,而且我也尝试过,sudo lsof -n -i TCP:35142但没有输出。

答案1

感谢@Spiff 的评论,我编写了这个程序来捕捉主动连接时的进程。

#!/bin/bash

port=$1

[ "$port" -gt 0 ] 2>/dev/null || { echo need port number. ; exit; }

while sleep 1
do
    netstat -plant |grep :$port|grep -iv listen |\
        while read _ _ _ remote local
        do
            rpt=$(echo $remote |cut -d':' -f2)
            echo
            date
            echo $remote $local
            [ -n "$rpt" ] && lsof -n -i TCP:$rpt
        done
done

过了一会儿,该lsof部分输出了另一个进程的 PID,我追踪到了它。该进程是另一个服务,仍在运行。可以增强此程序以解析 pidlsof并运行ps u $pid以获取详细信息。

相关内容