在 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); }}'