placing shell script under systemd control
Posted
by
Calvin Cheng
on Server Fault
See other posts from Server Fault
or by Calvin Cheng
Published on 2012-05-09T08:11:59Z
Indexed on
2012/09/22
15:39 UTC
Read the original article
Hit count: 358
Assuming I have a shell script like this:-
#!/bin/sh
# cherrypy_server.sh
PROCESSES=10
THREADS=1 # threads per process
BASE_PORT=3035 # the first port used
# you need to make the PIDFILE dir and insure it has the right permissions
PIDFILE="/var/run/cherrypy/myproject.pid"
WORKDIR=`dirname "$0"`
cd "$WORKDIR"
cp_start_proc()
{
N=$1
P=$(( $BASE_PORT + $N - 1 ))
./manage.py runcpserver daemonize=1 port=$P pidfile="$PIDFILE-$N" threads=$THREADS request_queue_size=0 verbose=0
}
cp_start()
{
for N in `seq 1 $PROCESSES`; do
cp_start_proc $N
done
}
cp_stop_proc()
{
N=$1
#[ -f "$PIDFILE-$N" ] && kill `cat "$PIDFILE-$N"`
[ -f "$PIDFILE-$N" ] && ./manage.py runcpserver pidfile="$PIDFILE-$N" stop
rm -f "$PIDFILE-$N"
}
cp_stop()
{
for N in `seq 1 $PROCESSES`; do
cp_stop_proc $N
done
}
cp_restart_proc()
{
N=$1
cp_stop_proc $N
#sleep 1
cp_start_proc $N
}
cp_restart()
{
for N in `seq 1 $PROCESSES`; do
cp_restart_proc $N
done
}
case "$1" in
"start")
cp_start
;;
"stop")
cp_stop
;;
"restart")
cp_restart
;;
*)
"$@"
;;
esac
From the bash script, we can essentially do 3 things:
- start the cherrypy server by calling
./cherrypy_server.sh start
- stop the cherrypy server by calling
./cherrypy_server.sh stop
- restart the cherrypy server by calling
./cherrypy_server.sh restart
How would I place this shell script under systemd
's control as a cherrypy.service
file (with the obvious goal of having systemd start up the cherrypy server when a machine has been rebooted)?
Reference systemd
service file example here - https://wiki.archlinux.org/index.php/Systemd#Using_service_file
© Server Fault or respective owner