在Linux上,我可以简单地:
netstat -ntp | grep server_ip:port
而且我得到给定连接的程序的PID和进程名称。
但是我如何在Solaris上执行?
如果您使用Solaris 10或更高版本,则可以使用socketsnoop.d DTrace脚本。 否则lsof可能是你最好的select,正如Dan指出的那样。
你可以试试lsof ,它也应该在Solaris上工作(如果有的话)。 试试lsof -i获取与networking相关的信息。
该脚本将使用标准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); }}'