Skip to content

Instantly share code, notes, and snippets.

@alobato
Created March 3, 2012 23:09
Show Gist options
  • Save alobato/1968852 to your computer and use it in GitHub Desktop.
Save alobato/1968852 to your computer and use it in GitHub Desktop.
start-stop-example
#!/bin/sh
# Quick start-stop-daemon example, derived from Debian /etc/init.d/ssh
set -e
# Must be a valid filename
NAME=foo
PIDFILE=/var/run/$NAME.pid
#This is the command to be run, give the full pathname
DAEMON=/usr/local/bin/bar
DAEMON_OPTS="--baz=quux"
export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
case "$1" in
start)
echo -n "Starting daemon: "$NAME
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS
echo "."
;;
stop)
echo -n "Stopping daemon: "$NAME
start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
echo "."
;;
restart)
echo -n "Restarting daemon: "$NAME
start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDFILE
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS
echo "."
;;
*)
echo "Usage: "$1" {start|stop|restart}"
exit 1
esac
exit 0
@silvestrefigueroa
Copy link

!!! thx so much!

@mrjosh
Copy link

mrjosh commented Dec 28, 2016

That's so helpful 👍

@gsmcfie
Copy link

gsmcfie commented Aug 15, 2017

Nice and clean - thanks

@fvargasruiz
Copy link

fvargasruiz commented Oct 4, 2017

Good example ... but, what's about the "status" option?

In the default option of "case" I think you have to use $0 instead of $1:
echo "Usage: "$0" {start|stop|restart}"

@chadmccathie
Copy link

chadmccathie commented Nov 2, 2017

Thanks, very helpful!

@TopperBG
Copy link

I think that could work if runs only with root/sudo
With localuser that
PIDFILE=/var/run/$NAME.pid
will not work, proper way will be
PIDFILE=/var/run/$NAME/$NAME.pid
/var/run is writable only for root

@vsee
Copy link

vsee commented Mar 1, 2018

lovely, thanks!

@Eberx
Copy link

Eberx commented Mar 6, 2018

@alobato
I guess add --make-pidfile like below
start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS

@nmvega
Copy link

nmvega commented Nov 28, 2018

I couldn't find a way to +1 @fvargasruiz comment, but he's correct so I'm quoting him here:

In the default option of "case" I think you have to use $0 instead of $1:
echo "Usage: "$0" {start|stop|restart}"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment