如何获得与特定的端口在sunos附加进程ID

我正在尝试使用SunOS上的端口7085获得进程。 我试过下面的命令。

netstat -ntlp | grep 7085 netstat -ntlp | grep 7085没有任何回报

netstat -anop | grep 7085 netstat -anop | grep 7085试过这个。 这些开关在SunO中无效

我得到以下输出。

#netstat -anop

netstat: illegal option -- o

usage: netstat [-anv] [-f address_family]

netstat [-n] [-f address_family] [-P protocol] [-g | -p | -s [interval [count]]]

netstat -m [-v] [interval [count]]

netstat -i [-I interface] [-an] [-f address_family] [interval [count]]

netstat -r [-anv] [-f address_family|filter]

netstat -M [-ns] [-f address_family]

netstat -D [-I interface] [-f address_family]

SunOS的版本是SunOS 5.10。 我相信netstat是唯一的命令可以做到这一点。

什么是netstat的确切开关,它会给我的进程ID附加端口?

Solutions Collecting From Web of "如何获得与特定的端口在sunos附加进程ID"

 pfiles /proc/* 2>/dev/null | nawk ' /^[0-9]*:/ { pid=$0 } /port: 7085$/ { printf("%s %s\n",pid,$0);}' 
  • pfiles /proc/*正在检索所有进程文件描述符的详细信息
  • 2>/dev/null正在剔除由于暂时进程死亡的错误
  • 每行以数字开头,后跟一个冒号,报告进程ID和详细信息,它存储在awk pid变量中
  • 当一行以字符串port: <portnumber>结束时port: <portnumber> (这里是7085),显示相应的pid变量。

注意:您需要所需的权限才能从您不拥有的进程中获取端口信息(root拥有所有权限)。

查看lsof http://linux.about.com/library/cmd/blcmdl8_lsof.htm命令&#x3002;

该命令描述哪些进程正在使用哪个文件描述符。 请记住,端口7085上的任何内容都会有自己的文件描述符,您可以使用它来追溯到正在使用它的进程。

我会尝试像这样的:

 $ lsof -i :7085 

希望它可以帮助。

我从这里得到了他的剧本。 登录solaris系统。 打开vi编辑器。 进入插入模式。 复制并粘贴此脚本。 保存该文件并给出名称PCP。 给予执行权限。 用-p或-P swithc运行这个脚本。 它将输出PID,PROCESS名称和端口。

确保你需要在ksh shell来执行它。

PCP是一个脚本,使管理员能够查看Solaris系统上正在使用的打开的TCP端口。 它将端口映射到PID,反之亦然。 它接受通配符,并且一目了然地显示所有打开的端口及其对应的PID。 这是很好的脚本给出了一个非常好的输出。 去尝试一下。

例如: #pcp -p PORT_NUMBER or #pcp -P PROCESS_ID

 #!/usr/bin/ksh # # # PCP (PID con Port) # v1.10 08/10/2010 Sam Nelson sam @ unix.ms # # If you have a Solaris 8, 9 or 10 box and you can't # install lsof, try this. It maps PIDS to ports and vice versa. # It also shows you which peers are connected on which port. # Wildcards are accepted for -p and -P options. # # Many thanks Daniel Trinkle trinkle @ cs.purdue.edu # for the help, much appreciated. # i=0 while getopts :p:P:a opt do case "${opt}" in p ) port="${OPTARG}";i=3;; P ) pid="${OPTARG}";i=3;; a ) all=all;i=2;; esac done if [ $OPTIND != $i ] then echo >&2 "usage: $0 [-p PORT] [-P PID] [-a] (Wildcards OK) " exit 1 fi shift `expr $OPTIND - 1` if [ "$port" ] then # Enter the port number, get the PID # port=${OPTARG} echo "PID\tProcess Name and Port" echo "_________________________________________________________" for proc in `ptree -a | awk '/ptree/ {next} {print $1};'` do result=`pfiles $proc 2> /dev/null| egrep "port: $port$"` if [ ! -z "$result" ] then program=`ps -fo comm= -p $proc` echo "$proc\t$program\t$port\n$result" echo "_________________________________________________________" fi done elif [ "$pid" ] then # Enter the PID, get the port # pid=$OPTARG # Print out the information echo "PID\tProcess Name and Port" echo "_________________________________________________________" for proc in `ptree -a | awk '/ptree/ {next} $1 ~ /^'"$pid"'$/ {print $1};'` do result=`pfiles $proc 2> /dev/null| egrep port:` if [ ! -z "$result" ] then program=`ps -fo comm= -p $proc` echo "$proc\t$program\n$result" echo "_________________________________________________________" fi done elif [ $all ] then # Show all PIDs, Ports and Peers # echo "PID\tProcess Name and Port" echo "_________________________________________________________" for proc in `ptree -a | sort -n | awk '/ptree/ {next} {print $1};'` do out=`pfiles $proc 2>/dev/null| egrep "port:"` if [ ! -z "$out" ] then name=`ps -fo comm= -p $proc` echo "$proc\t$name\n$out" echo "_________________________________________________________" fi done fi exit 0