Terminate processes for CLOSE_WAIT status of TCP


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Terminate processes for CLOSE_WAIT status of TCP
# 1  
Old 01-24-2013
Terminate processes for CLOSE_WAIT status of TCP

Hello Friends,

First of all im sorry for spending extra space in DB of forum with this thread, i know there would be a solution if i kept searching,

I need to terminate the process which causes CLOSE_WAIT status of TCP connection via port 8103:

Code:
-bash-3.00$ netstat -na | grep 8103
127.0.0.1.8103       127.0.0.1.63876      49152      0 49152      0 CLOSE_WAIT
127.0.0.1.8103       127.0.0.1.39286      49152      0 49152      0 CLOSE_WAIT
127.0.0.1.8103       127.0.0.1.60796      49152      0 49152      0 CLOSE_WAIT
      *.8103               *.*                0      0 49152      0 LISTEN
127.0.0.1.8103       127.0.0.1.62363      49152      0 49152      0 CLOSE_WAIT

I found this script FPMurphy posted on a thread here but i couldnt make it work for Solaris:

Code:
PORT=8103
PIDS=`ps -ef | sed 1d | awk '{print $2}'`
for pid in $PIDS
do
        /usr/proc/bin/pfiles $pid 2>/dev/null | grep -q "port: $PORT"
        if [[ $? -eq 0 ]] ; then
               echo "Port: $PORT is being used by PID: \c" 
                           ps -o pid -o args -p $PID | sed 1d
        fi
done

Function of grep -q in Linux is not provided on solaris.. So i got this:
Code:
grep: illegal option -- q
Usage: grep -hblcnsviw pattern file . . .

So i tried below part with xargs even without being sure about how exact output of "/usr/proc/bin/pfiles $pid" part seems like, im sorry a bit stuck with time...

Code:
PORT=8103
PIDS=`ps -ef | sed 1d | awk '{print $2}'`
for pid in $PIDS
do
        /usr/proc/bin/pfiles $pid 2>/dev/null | xargs grep "port: $PORT"
        if [[ $? -eq 0 ]] ; then
               echo "Port: $PORT is being used by PID: \c"
                           ps -o pid -o args -p $PID | sed 1d
        fi
done

I had this meaningless output:

Code:
grep: can't open 23534:
grep: can't open -bash
grep: can't open Current
grep: can't open rlimit:
grep: can't open 256
grep: can't open file
grep: can't open descriptors
grep: can't open 0:
grep: can't open S_IFCHR
grep: can't open mode:0600
grep: can't open dev:292,0
grep: can't open ino:12582922
grep: can't open uid:100

Any suggestion welcome,

Thanks in advance,
Kind Regards
# 2  
Old 01-24-2013
You can emulate -q with >/dev/null.

You also don't need $? at all.

Code:
if /usr/proc/bin/pfiles $pid 2>/dev/null | grep "port: $PORT" >/dev/null
then
       echo "Port: $PORT is being used by PID: \c" 
                   ps -o pid -o args -p $PID | sed 1d
fi

# 3  
Old 01-24-2013
I have had this warning now:

Code:
PORT=8103
PIDS=`ps -ef | sed 1d | awk '{print $2}'`
for pid in $PIDS
do
if /usr/proc/bin/pfiles $pid 2>/dev/null | grep "port: $PORT" >/dev/null
then
       echo "Port: $PORT is being used by PID: \c"
                   ps -o pid -o args -p $PIDS | sed 1d
fi
done

root@dx311 # ./port_PID_relation.sh
Code:
Port: 8103 is being used by PID: \c
usage: ps [ -aAdeflcjLPyZ ] [ -o format ] [ -t termlist ]
        [ -u userlist ] [ -U userlist ] [ -G grouplist ]
        [ -p proclist ] [ -g pgrplist ] [ -s sidlist ] [ -z zonelist ]
  'format' is one or more of:
        user ruser group rgroup uid ruid gid rgid pid ppid pgid sid taskid ctid
        pri opri pcpu pmem vsz rss osz nice class time etime stime zone zoneid
        f s c lwp nlwp psr tty addr wchan fname comm args projid project pset


ok now i have changed script a bit "pid" instead of $PIDS then i got the output below but still there is a problem PID: \c prints..

Code:
PORT=8103
PIDS=`ps -ef | sed 1d | awk '{print $2}'`
for pid in $PIDS
do
if /usr/proc/bin/pfiles $pid 2>/dev/null | grep "port: $PORT" >/dev/null
then
       echo "Port: $PORT is being used by PID: \c"
                   ps -o pid -o args -p $pid | sed 1d
fi
done;

Code:
root@dx311 # ./port_PID_relation.sh 
Port: 8103 is being used by PID: \c
28219 /usr/java/bin/java -server -Xms1024M -Xmx1024M -Xloggc:data/log/gc.out -Dhttp.p
Port: 8103 is being used by PID: \c
20613 grep port: 8103


Last edited by EAGL€; 01-24-2013 at 04:51 PM..
# 4  
Old 01-25-2013
Try this instead of that line:

Code:
printf "%s is being used by %s\n" $PORT $(ps -o pid -o args -p $pid | sed 1d)

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. AIX

How to repair a TCP/IP socket in state: CLOSE_WAIT?

Hi The clients connect to my server -using port 9130. But no client could connect to my server at this time. I've checked already and this is the result netstat -Aan|grep -v 127.0.0.1|grep 9130|pg f10006000abcb398 tcp4 10313 0 10.0.89.81.9130 10.158.70.24.1705 CLOSE_WAIT... (8 Replies)
Discussion started by: bobochacha29
8 Replies

2. UNIX for Dummies Questions & Answers

Processes and exit status

Hi, I can't understand why the last $? is 1? can somebody plz help me to understand it? thanks $ ksh $ ps -f UID PID PPID C STIME TTY TIME COMMAND msarabad 12361 12319 0 15:17:58 pts/1 0:00 ksh msarabad 12319 12317 0 15:15:11 pts/1 0:00 -sh msarabad 12362 12361 ... (7 Replies)
Discussion started by: messi777
7 Replies

3. Shell Programming and Scripting

Executing multiple processes without waiting for their exit status.

Hello Friends, Hope you are doing well. I just need a help in executing multiple processes. I've written a shell script which calls another scritps. But the problem is there are too many processes to run, and each process takes about a min to finish its execution. So, I want to just... (3 Replies)
Discussion started by: singh.chandan18
3 Replies

4. Programming

Getting TCP Port status through C API

Does anyone know if there is a C API call to get the status of a TCP port? As opposed to running netstat and parsing the results. At the moment I have to attempt to bind() and pick up on the address in use error which isn't very elegant Thanks ---------- Post updated at 10:42 AM ----------... (0 Replies)
Discussion started by: janra
0 Replies

5. Red Hat

How to kill a TCP connection which has status TIME_WAIT & no PID

Hi, I want to kill TCP connections which have status as TIME_WAIT & no PID (as per the output of the "netstat - p" command). Is there any command/utility available to kill connections to a specific port or IP address. The problem is that these connections don't have process ID (see... (4 Replies)
Discussion started by: Davinder31may
4 Replies

6. Programming

TCP status question

There is a server and a client,when client send a message to server,server can send a reply to client. The status of server and client is ESTABLISHED.Then I halt the client,I find the server status is CLOSE_WAIT and the client status is FIN_WAIT_2. Many minutes passed,I find the the server status... (1 Reply)
Discussion started by: konvalo
1 Replies

7. Programming

How to check TCP server status

Please tell me according to C/C++ socket programming; how client can check whether server is running or not during TCP communication. (1 Reply)
Discussion started by: mansoorulhaq
1 Replies

8. UNIX for Dummies Questions & Answers

How to check the status of the processes running for the current user?

Hi All, I am new to unix. Can anyone tell me "How to check the status of the processes running for the current user?" Regards, Ravindaran S (1 Reply)
Discussion started by: ravind27
1 Replies

9. UNIX for Advanced & Expert Users

clear CLOSE_WAIT status

Hi, I have an application with a bug in it that keeps sockets in CLOSE_WAIT, which eventually freezes the server because the user account it runs under runs out of file handles. We have the bug fixed but can only release the fix with the next release. Does anyone know how I can clear the... (3 Replies)
Discussion started by: rein
3 Replies

10. Shell Programming and Scripting

retrieving exit status from background processes

Hi, I need to retrieve the exit status of 4 moves running as background processes. The wait command will not work since it can only give me the exit status of the last of the background processes. Here's a sample of what I need !#/bin/ksh mv /dir1/subdir1/*.Z /dir6/subdir6/ & mv... (2 Replies)
Discussion started by: MG537
2 Replies
Login or Register to Ask a Question