检查用Jetty运行的GeoServer的pid

我已经安装GeoSerer与Jetty运行。 我使用监视器来监视GeoServer是否运行,我需要在这个过程中的PID。

任何人都可以告诉我该怎么做?

假设你正在使用默认的启动/closures脚本,快速和肮脏的方法是:

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

(我只是grepped模式,应该只匹配我感兴趣的过程,但如果模式匹配其他东西,你可能会得到奇怪的结果)

正确的方法是将启动/closures脚本封装到init脚本中,这样可以将文件系统中的pid保存在文件系统中,因为我们可以注意到,java文件pipe理员并不关心如何提供良好的服务pipe理脚本。

启动脚本(非常简化):

 #!/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