We have a Java server application running on Mac OS X.
Occasionally this application has become unresponsive, and we have resorted to killing it with kill -9
. However, the process doesn't disappear; it still appears to ps
, with parentheses around its name and a question mark in the STAT column:
$ ps u -p 776
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
camadmin 776 0.0 0.0 0 0 ?? ?E 5:12PM 0:00.00 (java)
What's more the port being used by the server is still bound:
$ netstat -na | grep 9902
tcp4 0 0 *.9902 *.* LISTEN
even though it's not visible to lsof
:
$ sudo lsof -P -i tcp | grep 9902
$
With the port still bound, we can't restart the server application. Short of restarting the machine, what can be done to get the port to release and get this process really killed?