I've never got any problems with finding process info by its port number. Every man who has ever worked with Linux knows about netstat:
netstat -p |grep :8010 tcp 0 0 0.0.0.0:8010 0.0.0.0:* LISTEN 2122/kopete udp 0 0 127.0.0.1:8010 0.0.0.0:* 2122/kopet
lsof -i :8010 | grep LISTEN kopete 2122 mikhail 17u IPv4 17717 0t0 TCP *:8010 (LISTEN)
Somebody even knows about fuser:
fuser -n tcp 8010 8010/tcp: 2122
But all these commands do not matter under Solaris!
All we have (on Solaris 5.10) is a /proc filesystem (with list of current processes) and Solaris utility pfiles, which allows us to see files associated with a process. So, the only way to solve this task is a little shell script:
#!/bin/ksh for pid in `ls /proc` do pfiles $pid | grep AF_INET | grep $1 if [ $? -eq 0 ]; then echo $pid fi done
Yes, it looks terrible. Moreover I really don't understand why I must modificate a proprietary operation system... But let's get back to process info.
Once we have a process PID, we can retrieve any info about it:
/usr/ucb/ps auxvv | grep 2122 mikhail 2122 0.1 0.5 148096 35152 ? Sl 19:58 0:02 /usr/bin/kopete -session XXX ls -l /proc/2122/exe lrwxrwxrwx 1 mikhail mikhail 0 Oct 19 19:58 /proc/2122/exe -> /usr/bin/kopete