You are looking at historical revision 31173 of this page. It may differ significantly from its current revision.

Here's an example systemd script for Spiffy the webserver, for use on systems using the systemd daemon manager.

Systemd requires two files to be placed in two different locations:

Be sure to make both files executable and owned by root.

The spiffy file, to be placed in /usr/lib/systemd/scripts/

#! /bin/sh
# -*- shell-script -*-

# This is /etc/init.d/spiffy on Linux systems using systemd
# It assumes you have a "spiffy.scm" script in /usr/local/libexec and a log directory in /var/log/spiffy

# Select which "csi" program to use; defaults to the one in $PATH
CSI=csi
# Use a longer trace buffer and a larger nursery size (optional)
CSI_ARGS="-:s1m -:a200"

DATE_FORMAT="+%Y-%m-%d %H:%M:%S"

CONFIG_FILE="/usr/local/libexec/spiffy.scm"
LOG_DIR="/var/log/spiffy"

start() {
 if [ ! -d "$LOG_DIR" ]; then
      echo "Log directory \"$LOG_DIR\" does not exist."
      exit 1
    fi

    if [ ! -r "$CONFIG_FILE" ]; then
      echo "Cannot find or read the configuration file. Please create or check the permissions of the following file: \"$CONFIG_FILE\"."
      exit 1
    fi

    echo "Starting spiffy..."
    echo "start: " `date "$DATE_FORMAT"` >> /var/log/spiffy/start-stop.log
    (cd /var/log/spiffy; ulimit -c unlimited ; $CSI $CSI_ARGS -s /usr/local/libexec/spiffy.scm &)  </dev/null &> /var/log/spiffy/init.log
}

stop() {
    echo "Stopping spiffy..."
    echo "stop: " `date "$DATE_FORMAT"` >> /var/log/spiffy/start-stop.log
    pids=`ps ax | grep "[/]usr/local/libexec/spiffy.scm" | awk '{print $1}'`
    if [ -z "$pids" ] ; then
       echo "spiffy is not running"
    else
        for pid in $pids; do
            echo "killing " $pid
            kill $pid
        done
    fi
}
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        sleep 1
        start
        ;;
    *) exit 1
esac

The spiffy.service file, to be placed in /usr/lib/systemd/system/

[Unit]
Description=Spiffy the webserver

[Service]
Type=oneshot
ExecStart=/usr/lib/systemd/scripts/spiffy start
ExecStop=/usr/lib/systemd/scripts/spiffy stop
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Now you can start, stop or restart Spiffy using the following commands:

$ systemctl start spiffy
$ systemctl stop spiffy
$ systemctl restart spiffy

To enable Spiffy to be started at boot:

$ systemctl enable spiffy