哪个本地进程连接到给定端口上的给定服务器?

哪个本地进程连接到给定端口上的给定服务器?

在 Linux 上,我可以简单地:

netstat -ntp | grep server_ip:port

我获得了正在建立给定连接的程序的 PID 和进程名称。

但是我该如何在 Solaris 上做到这一点?

答案1

如果你使用的是 Solaris 10 或更高版本,则可以使用套接字监听器DTrace 脚本。否则,lsof正如 Dan 指出的那样,这可能是最好的选择。

答案2

您可以尝试lsof,它也应该可以在 Solaris 上运行(如果您有的话)。尝试lsof -i获取与网络相关的信息。

答案3

此脚本将使用标准 Solaris 命令为您提供该信息。如果您不提供任何参数,它将列出所有打开的端口;如果您提供参数,它将列出打开该端口的进程:

    #!/bin/ksh
    pfexec pfiles /proc/* 2>/dev/null | nawk -v port=$1 '
    /^[0-9]/ { cmd=$0; type="unknown"; continue }
    $1 == "SOCK_STREAM" { type="tcp" }
    $1 == "SOCK_DGRAM" { type="udp" }
    $2 == "AF_INET" { if((port!="")&&($5!=port)) continue;
                      if(cmd!="") { printf("%s\n    %s:%s/%s\n",cmd,$3,$5,type); cmd="" }
                      else { printf("    %s:%s/%s\n",cmd,$3,$5,type); }}'

相关内容