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.