In Ubuntu, you create init scripts using the SysV init system. Details are here. In this article, I will create a very simple script to start and stop Tomcat.
In this tutorial, our goal is to start and stop Tomcat as the user “joe”. First, we will create a script called tomcat in /etc/init.d folder.
#! /bin/sh
### BEGIN INIT INFO
# Provides: tomcat
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Tomcat
# Description: This file starts and stops Tomcat server
#
### END INIT INFO
TOMCAT_DIR=/home/joe/programs/apache-tomcat-8.0.5/
export JAVA_HOME=/home/joe/programs/jdk1.8.0_05
case "$1" in
start)
su joe -c $TOMCAT_DIR/bin/startup.sh
;;
stop)
su joe -c $TOMCAT_DIR/bin/shutdown.sh
sleep 10
;;
restart)
su joe -c $TOMCAT_DIR/bin/shutdown.sh
sleep 20
su joe -c $TOMCAT_DIR/bin/startup.sh
;;
*)
echo "Usage: tomcat {start|stop|restart}" >&2
exit 3
;;
esac
The “Default-Start” field specifies the run levels in which the script will be run with the “start” argument. “Default-Stop” does the reverse. For example, when the machines shuts down and enters run level 1, the script will be run with the “stop” argument.
Make the script executable:
sudo chmod a+x tomcat
Always unit test the script by running it from the command line. For example:
sudo ./tomcat start sudo ./tomcat stop
If all goes well then register the script as an init script:
sudo update-rc.d tomcat defaults
Reboot the machine and make sure that Tomcat has started.