как вы реализуете статус Tomcat? я сделал
status(){ ps -aef| grep tomcat |grep -v grep }
он показывает еще 2 процесса, кроме действительного процесса tomcat. Есть ли способ лучше?
service tomcat status root 4107 1 1 19:11 ? 00:00:47 /usr/java/latest/bin/java -Djava.util.logging.config.file=/usr/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/tomcat/endorsed -classpath /usr/tomcat/bin/bootstrap.jar -Dcatalina.base=/usr/tomcat -Dcatalina.home=/usr/tomcat -Djava.io.tmpdir=/usr/tomcat/temp org.apache.catalina.startup.Bootstrap start root 4620 4376 0 20:11 pts/0 00:00:00 /bin/sh /sbin/service tomcat status root 4625 4620 0 20:11 pts/0 00:00:00 /bin/bash /etc/init.d/tomcat status
В моем сценарии инициализации есть следующее. Это не идеально! Но он выполняет свою работу в случае одного Tomcat в коробке:
isRunning() {
numproc=`ps -ef | grep "java" | grep "catalina" | grep -v "grep" | wc -l`
if [ ${numproc} -gt 0 ]; then
return 1
fi
return 0
}
При запуске - вы можете установить переменную окружения CATALINA_PID, которая должна быть именем файла. Сценарии запуска tomcat заметят эту переменную и создадут файл с pid. Затем вы можете использовать это, чтобы указать, жив ли кот.
status(){ ps -fp `cat $CATALINA_PID` }
ps также выйдет из 0, если процесс существует. 1, если это не так, что также должно быть и проще, безопаснее.