Я получил его сценарий откуда-то. Войдите в систему Solaris. Откройте редактор vi. Войдите в режим вставки. Скопируйте и вставьте этот скрипт. Закройте файл. Дайте разрешение на выполнение. Запустите этот скрипт с -p или -P swithc. Он выдаст вывод с PID, именем процесса и портом.
PCP - это скрипт, который позволяет администраторам видеть, какие открытые порты TCP используются в системе Solaris. Он сопоставляет порты с PID и наоборот. Он принимает подстановочные знаки, а также сразу отображает все открытые порты и соответствующие им
ИДП. Это хороший сценарий, который дает очень хороший результат. Просто попробуйте.
Пример:
#pcp -p PORT_NUMBER or #pcp -P PROCESS_ID
#!/usr/bin/ksh
#
# Wildcards are accepted for -p and -P options.
#
# 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