-
Bug
-
Resolution: Done
-
Minor
-
JWS 3.0.1 ER1
-
None
-
Release Notes
-
-
-
-
-
-
Documented as Resolved Issue
In tomcat8 and tomcat7 init scripts there is switch with "status" branch and code in it:
if [ -f "/var/run/${NAME}.pid" ]; then # status ${NAME} # RETVAL="$?" read kpid < /var/run/${NAME}.pid if [ -d "/proc/${kpid}" ]; then echo "${NAME} (pid ${kpid}) is running..." RETVAL="0" fi else pid="$(/usr/bin/pgrep -d , -u ${TOMCAT_USER} -G ${TOMCAT_GROUP} java)" if [ -z "$pid" ]; then # status ${NAME} # RETVAL="$?" echo "${NAME} is stopped" RETVAL="3" else echo "${NAME} (pid $pid) is running..." RETVAL="0" fi fi
In case that particular pid file "/var/run/${NAME}.pid" exists but appropriate process has already exited then there is no message print to user and return code is 0. IMHO in this case user should be informed that particular service is not running and return value should be 3 according to the Linux Standard Base.
I propose change like this:
# diff -u tomcat8 tomcat8.new --- tomcat8 2015-07-21 09:07:16.855704901 -0400 +++ tomcat8.new 2015-07-21 09:07:05.929571026 -0400 @@ -272,6 +272,10 @@ if [ -d "/proc/${kpid}" ]; then echo "${NAME} (pid ${kpid}) is running..." RETVAL="0" + else + echo "${NAME} is stopped" + rm -f /var/run/${NAME}.pid # I really do not like reusing same code on multiple places... + RETVAL="3" fi else pid="$(/usr/bin/pgrep -d , -u ${TOMCAT_USER} -G ${TOMCAT_GROUP} java)"