我已经安装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