Wiki source code of Killing WOA Processes

Last modified by David Avendasora on 2010/11/30 06:45

Show last authors
1 This is one of the most vexing question. How to kill a runaway WebObjects application? The ps command does not give you any information as it lists the process simply as java.
2
3 Try to use lsof. You need to run it with admin privileges so the command is
4
5 {{noformat}}
6
7 sudo lsof -i tcp:xxxx
8
9 {{/noformat}}
10
11 Alternatively you can have a script:
12
13 {{code}}
14
15 #!/bin/sh
16 #
17 # portslay: kill the task listening on the specified TCP port
18 #
19 kill -9 `lsof -i tcp:$1 | grep LISTEN | awk '{ print $2;}'`
20
21 {{/code}}
22
23 You will also have to do a sudo for the script to run.
24
25 For those stuck with the CLOSE_WAIT problems try this:
26
27 {{noformat}}
28
29 sudo lsof -i tcp:xxxx
30
31 {{/noformat}}
32
33 Alternatively you can have a script:
34
35 {{code}}
36
37 #!/bin/sh
38 #
39 # portslay: kill the task listening on the specified TCP port
40 #
41 kill -9 `lsof -i tcp:$1 | grep CLOSE_WAIT | awk '{ print $2;}'`
42
43 {{/code}}
44
45 run it by doing:
46
47 {{noformat}}
48
49 sudo ./portslay xxxx-yyyy
50
51 {{/noformat}}
52
53 where xxxx is the first port and yyyy the last port
54
55 ----
56
57 how about (pref. inside a script):
58
59 {{noformat}}
60
61 ps aux | grep java | grep <appName> | grep -v grep | awk '{ print"kill -9 "$2 }' | sh
62
63 {{/noformat}}
64
65 \\
66
67 === Mike Schrag ===
68
69 I just use
70
71 {{noformat}}
72
73 ps auxww
74
75
76 {{/noformat}}
77
78 which will show the full commandline. You can see the app name from this view.
79
80 === Fabian Peters ===
81
82 On FreeBSD one needs to set
83
84 {{noformat}}
85
86 kern.ps_arg_cache_limit=1024
87
88 {{/noformat}}
89
90 in /etc/sysctl to reveal the full command line with ps -auxww. To set it immediately:
91
92 {{noformat}}
93
94 sysctl kern.ps_arg_cache_limit=1024
95
96 {{/noformat}}
97
98 Alternatively, one can use Johan's script below.
99
100 === Johan Henselmans ===
101
102 I have written a small script that uses lsof to find the process by looking at some specific file that is opened, the returned processes can then be used to kill the process
103
104 {{code}}
105
106 #!/bin/sh
107
108 if [ $# = 0 ]; then
109 echo ""
110 echo " usage: $0 javaname(s)"
111 echo " The current processes that containt javaname will be displayed"
112 echo " eg: $0 JavaMonitor.woa"
113 echo ""
114 exit 1
115 fi
116
117 OS=`uname -s`
118 # echo $OS
119 case ${OS} in
120 'FreeBSD')
121 LSOF=/usr/local/sbin/lsof
122 ;;
123 'Linux')
124 LSOF=/usr/sbin/lsof
125 ;;
126 'Darwin')
127 LSOF=/usr/sbin/lsof
128 ;;
129 *)
130 echo "no lsof command available on this OS!";
131 exit 1
132 ;;
133 esac
134
135 for i in $*
136 do
137 ${LSOF} -c java | grep -i $i | awk '{print $2}' | sort -u;
138 done
139
140 {{/code}}