Creating an Init Script in Ubuntu 14.04

Creating an Init Script in Ubuntu 14.04

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.

Author Surjit Sidhu

Surjit SidhuSurjit is a student of IT, a freelance web designer/developer and a tech writer. He deals with both front-end and back-end stuff. Whenever he is not in front of an Internet-enabled device he is probably reading a book or traveling.