检查使用 Jetty 运行的 GeoServer 的 pid

检查使用 Jetty 运行的 GeoServer 的 pid

我已经安装了 GeoSerer 并运行 Jetty。我使用监控监视 GeoServer 是否正在运行,我需要进程中的 pid。

谁能告诉我该怎么做?

答案1

假设您使用默认的启动/关闭脚本,那么快速而肮脏的方法是:

gsrvpid=`ps axuwwwww|grep GEOSERVER | grep -v grep | awk ' { print $2 ; } '`
echo $gsrvpid
25271

(我只是 grep 了一个应该只与我感兴趣的过程匹配的模式,但如果该模式也与其他内容匹配,您可能会得到奇怪的结果)

正确的方法是将启动/关闭脚本包装到 init 脚本中,该脚本会将 pid 保存在文件系统的某个位置,因为我们可以注意到 java 开发人员并不真正关心提供良好的服务管理脚本。

启动脚本(非常简化):

#!/bin/sh

export GEOSERVER_HOME=/root/tmp/geoserver-2.0.2
cd ${GEOSERVER_HOME} || exit
echo $$ > /var/run/geoserver.pid
exec ./bin/startup.sh

关机脚本(非常简化):

#!/bin/sh
export GEOSERVER_HOME=/root/tmp/geoserver-2.0.2
cd ${GEOSERVER_HOME} || exit
./bin/shutdown.sh
rm -f /var/run/geoserver.pid

你可以使用以下命令获取进程的 pid

cat /var/run/geoserver.pid

像这样:

ps  www -p `cat /var/run/geoserver.pid`
  PID TTY      STAT   TIME COMMAND
26394 pts/4    Sl+    0:12 /usr/lib/jvm/java-6-sun/bin/java -DGEOSERVER_DATA_DIR=/root/tmp/geoserver-2.0.2/data_dir -Djava.awt.headless=true -DSTOP.PORT=8079 -DSTOP.KEY=geoserver -jar start.jar

或者像这样:

kill -0 `cat /var/run/geoserver.pid` && echo "my geo thing is alive"
my geo thing is alive

相关内容