Systemd and Upstart Services

DZone 's Guide to

Systemd and Upstart Services

Adding daemons to a Debian or Red Hat system is commonplace; this procedure shows you how to install and run Apache Tomcat with the aid of Systemd.

· Java Zone ·
Free Resource

Most Linux servers that I use are either Debian based or Red Hat based.

A common task is adding daemon services.

Suppose that we want to start a tomcat application on startup

First we install tomcat:

mkdir /opt/tomcat
groupadd tomcat
useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
wget http://apache.cc.uoc.gr/tomcat/tomcat-8/v8.0.33/bin/apache-tomcat-8.0.33.tar.gz
tar xvf apache-tomcat-8.0.33.tar.gz
mv apache-tomcat-8.0.33/* /opt/tomcat
rm -r apache-tomcat-8.0.33 apache-tomcat-8.0.33.tar.gz 
cd /opt/tomcat
chgrp -R tomcat conf
chmod g+rwx conf
chmod g+r conf/*
chown -R tomcat work/ temp/ logs/

In case of Systemd we should add a tomcat.service file in /etc/systemd/system.


Description=Apache Tomcat Web Application Container
After=syslog.target network.target


Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Duser.timezone=UTC -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'

ExecStop=/bin/kill -15 $MAINPID



I specified the script to start after syslog and network are enabled. As we can see systemd handles tomcat as a daemon and kills the pid. With User and Group we specify the user and the group that the process should be run as. Systemd will handle the upstart process and kill it using the PID.

Enter these command to enable and run:

systemctl enable tomcat
systemctl start tomcat

In case of upstart we should create a tomcat.conf file in /etc/init/:

description "Tomcat instance"
author "Emmanouil Gkatziouras"

respawn limit 2 5

start on runlevel [2345]
stop on runlevel [!2345]

setuid tomcat
setgid tomcat

env CATALINA_HOME=/opt/tomcat

 $CATALINA_HOME/bin/catalina.sh run
end script

post-stop script
 rm -rf $CATALINA_HOME/temp/*
end script

It will start on run levels 2,3,4 or 5.

The group and the user id to be executed will be tomcat. After tomcat is stopped the post script block will remove the temp files. Instead of starting the process in the background as a daemon, upstart will handle the process on the foreground.

To start:

sudo initctl start tomcat
spring ,aws ,sqs ,jms

Published at DZone with permission of Emmanouil Gkatziouras , DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}