5

SunOSのポート7085でプロセスを接続しようとしています。次のコマンドを試してみました。

netstat -ntlp | 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のバージョンはSunOS5.10です。これを実行できるコマンドはnetstatだけだと思います。

ポートに接続されたプロセスIDを取得するnetstatの正確なスイッチは何ですか?

4

3 に答える 3

10
pfiles /proc/* 2>/dev/null | nawk '
/^[0-9]*:/ { pid=$0 }
/port: 7085$/ { printf("%s %s\n",pid,$0);}'
  • pfiles /proc/*すべてのプロセスのファイル記述子の詳細を取得しています
  • 2>/dev/null一時的なプロセスがその間に死亡したためにエラーをドロップアウトしています
  • 数字で始まりコロンが続く各行は、プロセスIDと詳細を報告し、awkpid変数に格納されます。
  • 行が文字列port: <portnumber>(ここでは7085)で終わる場合、対応するpid変数が表示されます。

注:所有していないプロセスからポート情報を取得するには、必要な特権が必要です(rootにはすべての特権があります)。

于 2012-11-07T09:37:55.460 に答える
3

lsof http://linux.about.com/library/cmd/blcmdl8_lsof.htmコマンドを見てください。

このコマンドは、どのプロセスがどのファイル記述子を使用しているかを示します。ポート 7085 上のすべてのものには、それを使用するプロセスを追跡するために使用できる独自のファイル記述子があることに注意してください。

私は次のようなことを試します:

$ lsof -i :7085

それが役立つことを願っています。

于 2012-11-06T16:29:06.743 に答える
0

彼のスクリプトはHEREから入手しました。solaris システムにログインします。vi エディターを開きます。挿入モードに入ります。このスクリプトをコピーして貼り付けます。ファイルを保存し、PCP という名前を付けます。実行権限を与えます。-p または -P switchc を指定してこのスクリプトを実行します。PID、PROCESS 名、およびポートを含む出力が得られます。

実行するには、ksh シェルにいる必要があることを確認してください。

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
于 2012-11-07T07:11:55.670 に答える