跳转至内容

WebObjects/Web 应用程序/部署/终止 WOA 进程

来自维基教科书,开放的书籍,为开放的世界

这是最令人头疼的问题之一。如何终止一个失控的 WO 应用程序?ps 命令不会给你任何信息,因为它将进程列为 java。

尝试使用 lsof。您需要以管理员权限运行它,因此命令为

sudo lsof -i tcp:xxxx 

或者,您可以使用脚本

 #!/bin/sh
 #
 #  portslay:  kill the task listening on the specified TCP port
 #
 kill -9 `lsof -i tcp:$1 | grep LISTEN | awk '{ print $2;}'`

您还需要对脚本进行 sudo 才能运行。

对于那些遇到 CLOSE_WAIT 问题的人,请尝试以下方法

sudo lsof -i tcp:xxxx 

或者,您可以使用脚本

 #!/bin/sh
 #
 #  portslay:  kill the task listening on the specified TCP port
 #
 kill -9 `lsof -i tcp:$1 | grep CLOSE_WAIT | awk '{ print $2;}'`

通过执行以下操作来运行它

 sudo ./portslay xxxx-yyyy

其中 xxxx 是第一个端口,yyyy 是最后一个端口


如何在(最好是在脚本中)

ps aux | grep java | grep <appName> | grep -v grep | awk '{ print"kill -9 "$2 }' | sh

Mike Schrag

[编辑 | 编辑源代码]

我只使用

 ps auxww

这将显示完整的命令行。您可以从这个视图中看到应用程序名称。

Fabian Peters

[编辑 | 编辑源代码]

在 FreeBSD 上,需要设置

 kern.ps_arg_cache_limit=1024

在 /etc/sysctl 中以显示使用 ps -auxww 的完整命令行。要立即设置它

 sysctl kern.ps_arg_cache_limit=1024

或者,可以使用 Johan 以下的脚本。

Johan Henselmans

[编辑 | 编辑源代码]

我编写了一个小型脚本,它使用 lsof 通过查看打开的某些特定文件来查找进程,然后可以使用返回的进程来终止进程

#!/bin/sh

if [ $# = 0 ]; then
        echo ""
        echo "   usage: $0 javaname(s)"
        echo "   The current processes that  containt javaname will be displayed"
        echo "   eg: $0 JavaMonitor.woa"
        echo ""
        exit 1
fi

OS=`uname -s`
# echo $OS
case  ${OS} in
'FreeBSD')
LSOF=/usr/local/sbin/lsof
;;
'Linux')
LSOF=/usr/sbin/lsof
;;
'Darwin')
LSOF=/usr/sbin/lsof
;;
*)
echo "no lsof command available on this OS!";
exit 1
;;
esac

for i in $*
do
${LSOF} -c java | grep -i $i | awk '{print $2}' | sort -u;
done
华夏公益教科书