Я установил 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