我试图让附有在SunOS端口7085的过程。 我尝试以下命令。
netstat -ntlp | grep 7085
netstat -ntlp | grep 7085
并没有返回任何东西
netstat -anop | grep 7085
netstat -anop | grep 7085
试过这一个也。 此开关不SunOS中有效
我得到下面的输出。
#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的版本是5.10的SunOS。 我相信的netstat是唯一的命令可以做到这一点。
什么是netstat的确切的开关,这将给我附有端口的进程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>
(这里是7085),则显示相应的PID变量。
注意:您所需要的必需的权限(S)从你没有自己的进程(根拥有所有权限)获得端口信息。
有lsof的看看http://linux.about.com/library/cmd/blcmdl8_lsof.htm命令。
该命令描述了进程正在使用哪个文件描述符。 请记住,在端口7085任何事情都会有,你可以用它来追溯其正在使用它的过程中它自己的文件描述符。
我会尝试这样的:
$ lsof -i :7085
希望它可以帮助。
从我得到了他的剧本这里 。 登录到Solaris系统。 打开vi编辑器。 进入插入模式。 复制并粘贴此脚本。 保存文件,并给予名称PCP。 给执行权限。 运行此脚本使用-p或-P swithc。 它会给与PID,进程名和端口的输出。
确保你需要在KSH的Shell来执行它。
PCP是一个脚本,使管理员能够看到打开的TCP端口在Solaris系统上使用。 它映射端口的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