Tuesday, January 15, 2013

[Solaris] Which process is bound to a given port ?

https://blogs.oracle.com/JoachimAndres/entry/solaris_which_process_is_bound1


Again I was faced with the problem of a port being busy and needed to determine what process was bound to it. The little script below I picked up some time ago from the internet came in handy. I unfortunately cannot remember though to whom I owe credits. Here it is:
#!/bin/ksh
line='---------------------------------------------'
pids=$(/usr/bin/ps -ef -o pid=)
if [ $# -eq 0 ]; then
read ans?"Enter port you would like to know pid for: "
else
ans=$1
fi
for f in $pids
do
/usr/proc/bin/pfiles $f 2>/dev/null | /usr/xpg4/bin/grep -q "port: $ans"
if [ $? -eq 0 ]; then
echo $line
echo "Port: $ans is being used by PID:\\c"
pargs -l $f
#/usr/bin/ps -o pid,args -p $f
fi
done
exit 0

=================================


#!/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="";
        }
}'

No comments:

Post a Comment