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