Bug#1034833: sysv init script missing in tomcat10 package
Andreas Messer
andi at bastelmap.de
Tue Apr 25 18:35:38 BST 2023
Package: tomcat10
Version: 10.1.6-1
Dear maintainers, the tomcat10 package does not ship a sysvinit
script for use with traditional init. Please consider adding such
a script to the package since it will make things simpler for
users of sysvinit. I have attached a possible implementation of
such a script to this mail. (Derived from tomcat9 package with
some cleanup) I can offer to support/maintain this script
in future if desired.
Best regards,
Andreas Messer
--
gnuPG keyid: 8C2BAF51
fingerprint: 28EE 8438 E688 D992 3661 C753 90B3 BAAA 8C2B AF51
-------------- next part --------------
#!/bin/sh
### BEGIN INIT INFO
# Provides: tomcat10
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Tomcat 10
# Description: The Tomcat 10 servlet engine runs Java Web Archives.
### END INIT INFO
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC='Tomcat 10 servlet engine'
NAME=tomcat10
readonly DESC NAME
# exit cleanly if disabled or not installed
test -x /usr/libexec/tomcat10/tomcat-update-policy.sh || exit 0
test -x /usr/libexec/tomcat10/tomcat-start.sh || exit 0
test -x /usr/libexec/tomcat10/tomcat-locate-java.sh || exit 0
. /lib/init/vars.sh
test -t 0 && VERBOSE=yes
# set defaults for options
CATALINA_HOME=/usr/share/tomcat10
CATALINA_BASE=/var/lib/tomcat10
CATALINA_TMPDIR=/tmp/tomcat10-tmp
export CATALINA_HOME CATALINA_BASE CATALINA_TMPDIR
JAVA_OPTS=-Djava.awt.headless=true
JSP_COMPILER= # only used if nonempty
SECURITY_MANAGER=false
UMASK=022
export JAVA_HOME JAVA_OPTS JSP_COMPILER SECURITY_MANAGER UMASK
[ -r /etc/default/tomcat10 ] && . /etc/default/tomcat10
. /lib/lsb/init-functions
# somewhat LSB-compliant exit with failure
if test x"$1" = x"status"; then
exit_failure_msg() {
log_failure_msg "$@"
exit 4
}
else
exit_failure_msg() {
log_failure_msg "$@"
exit 1
}
fi
# figure out the JRE executable catalina.sh will use
# (we need it for start-stop-daemon --exec for reliability)
[ x"${JAVA_HOME}" = x ] && \
JAVA_HOME=$(su tomcat -s /bin/sh -c ". /usr/libexec/tomcat10/tomcat-locate-java.sh; echo \${JAVA_HOME}")
[ x"${JAVA_HOME}" != x ] || exit_failure_msg "could not determine JRE"
JAVA="${JAVA_HOME}/bin/java"
[ -x "${JAVA}" ] || exit_failure_msg "could not find java executable ${JAVA}"
# prepare for actions
case $1 in
(start|stop|restart|force-reload)
# handled below
;;
(try-restart|status)
start-stop-daemon --status --quiet \
--pidfile /var/run/tomcat10.pid \
--exec "$JAVA" --user tomcat
rv=$?
# clean up stale pidfile if necessary
(test x"$rv" = x"1" && rm -f /var/run/tomcat10.pid || :)
# process status result
case $1 in
(try-restart)
test x"$rv" = x"0" || {
# service is not running, or status is unknown
log_success_msg "$NAME is not running"
exit 0
}
# service running, restart it
;;
(status)
case $rv in
(0)
log_success_msg "$NAME is running"
;;
(4)
log_failure_msg "could not access PID file for $NAME"
;;
(*)
log_failure_msg "$NAME is not running"
;;
esac
exit $rv
;;
esac
;;
(reload|*)
# not supported
echo >&2 "Usage: $0 {start|stop|restart|try-restart|force-reload|status}"
exit 3
;;
esac
# handle stopping/starting
rv=0
case $1 in
(stop|restart|try-restart|force-reload)
test x"$VERBOSE" = x"no" || log_daemon_msg "Stopping $DESC" "$NAME"
start-stop-daemon --stop --quiet \
--retry=10 --oknodo --remove-pidfile \
--pidfile /var/run/tomcat10.pid \
--exec "$JAVA" --user tomcat
rv=$?
test x"$VERBOSE" = x"no" || log_end_msg $rv
;;
esac
test x"$rv" = x"0" || exit $rv
case $1 in
(start|restart|try-restart|force-reload)
# ensure the temporary directory exist and change to it
rm -rf "$CATALINA_TMPDIR"
mkdir "$CATALINA_TMPDIR" || \
exit_failure_msg 'could not create JVM temporary directory'
chown -h tomcat "$CATALINA_TMPDIR"
cd "$CATALINA_TMPDIR"
# create log directory if not exists
[ -d /var/log/tomcat10 ] || mkdir -p /var/log/tomcat10
/usr/libexec/tomcat10/tomcat-update-policy.sh || \
exit_failure_msg 'could not regenerating catalina.policy file'
rm -f /var/run/tomcat10.pid
test x"$VERBOSE" = x"no" || log_daemon_msg "Starting $DESC" "$NAME"
start-stop-daemon --start --quiet \
--chuid tomcat --umask "$UMASK" \
--startas /usr/libexec/tomcat10/tomcat-start.sh \
--background --make-pidfile \
--pidfile /var/run/tomcat10.pid \
--output /var/log/tomcat10/catalina.out \
--exec "$JAVA" --user tomcat
rv=$?
test x"$VERBOSE" = x"no" || log_end_msg $rv
;;
esac
exit $rv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-java-maintainers/attachments/20230425/171046a9/attachment.sig>
More information about the pkg-java-maintainers
mailing list