supondo que você esteja usando os scripts padrão de inicialização / desligamento, a maneira rápida e suja é:
gsrvpid='ps axuwwwww|grep GEOSERVER | grep -v grep | awk ' { print $2 ; } ''
echo $gsrvpid
25271
(Eu apenas busquei um padrão que deve corresponder apenas ao processo no qual estou interessado, mas você pode obter resultados estranhos se o padrão também corresponder a outro)
a maneira correta é envolver os scripts de inicialização / desligamento em um script de inicialização que salvará o pid em algum lugar no sistema de arquivos porque podemos notar que os usuários Java realmente não se importam em fornecer bons scripts de gerenciamento de serviço.
script de inicialização (muito simplificado):
#!/bin/sh
export GEOSERVER_HOME=/root/tmp/geoserver-2.0.2
cd ${GEOSERVER_HOME} || exit
echo $$ > /var/run/geoserver.pid
exec ./bin/startup.sh
script de desligamento (muito simplificado):
#!/bin/sh
export GEOSERVER_HOME=/root/tmp/geoserver-2.0.2
cd ${GEOSERVER_HOME} || exit
./bin/shutdown.sh
rm -f /var/run/geoserver.pid
você pode obter o pid do processo com
cat /var/run/geoserver.pid
assim:
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
ou assim:
kill -0 'cat /var/run/geoserver.pid' && echo "my geo thing is alive"
my geo thing is alive