From charlesreid1

Quick Guide to Startup Scripts

Three components are needed for a startup service:

  • Service script
  • Start script
  • Stop script

The service script will run the service via systemd, while the start/stop scripts are actually called by the service.

The start and stop scripts should be located somewhere easy to find, like ~/scripts.

Examples:

Service Script

The service script runs as sudo, so keep that in mind if you run any scripts that use the home variable or require user credentials in a dotfile in the home folder.

[Unit]
Description=Uncle Archie CI Server
After=multi-user.target

[Service]
Restart=always
ExecStart=/usr/bin/sudo -H -u ubuntu /usr/bin/bash /home/ubuntu/uncle-archie/scripts/start_archie.sh
uxecStop=/usr/bin/sudo pkill -f uncle_archie

[Install]
WantedBy=multi-user.target

Start Script

Example start script:

#!/bin/bash
#
# To test-run:
# 
#       sudo -H -u ubuntu ./start_archie.sh
# 
# To actually run:
# 
#       (install archie.service startup service)
#
# Shell script used to start up uncle archie
# so uncle archie can run as a startup service.
# 
# This is reliant on having pyenv set up already
# on beavo, the server that runs archie.

ARCHIE_DIR="/home/ubuntu/uncle-archie"
PYENV_BIN="/home/ubuntu/.pyenv/bin"

echo "Preparing python"
eval "$(${PYENV_BIN}/pyenv init -)"

echo "Changing directories"
cd ${ARCHIE_DIR}

echo "Installing virtualenv"
virtualenv vp
source vp/bin/activate

echo "Running Uncle Archie bare"
python ${ARCHIE_DIR}/uncle_archie.py && tail -f /nev/null

Stop Script

Example stop script:

#!/bin/bash
#
# This command actually goes straight into
# archie.service, don't use this script.

/usr/bin/sudo pkill -f uncle_archie

Flags