Назад | Перейти на главную страницу

Проверьте pid-код GeoServer, работающего с Jetty

Я установил GeoSerer, работающий с Jetty. я использую контролировать чтобы контролировать, работает GeoServer или нет, и мне нужен pid в процессе.

Кто-нибудь может сказать мне, как это сделать?

Предположим, вы используете сценарии запуска / выключения по умолчанию, быстрый и грязный способ:

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

(я просто искал шаблон, который должен соответствовать только процессу, который меня интересует, но вы можете получить странные результаты, если шаблон также соответствует чему-то еще)

правильный способ - обернуть сценарии запуска / выключения в сценарий инициализации, который сохранит 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

вы можете получить представление о процессе с помощью

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