Skip to content

Instantly share code, notes, and snippets.

@gregwym
Last active January 29, 2021 23:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save gregwym/d7b31606758acfb61896f588d13c3dda to your computer and use it in GitHub Desktop.
Save gregwym/d7b31606758acfb61896f588d13c3dda to your computer and use it in GitHub Desktop.
Homebridge init.d script
#!/bin/sh
### BEGIN INIT INFO
# Provides: homebridge
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop:
# Description: HomeKit support for the impatient
### END INIT INFO
# -*- coding: utf-8 -*-
set -e
DAEMON=/usr/bin/homebridge
PARAMS=""
LOGFILE=/var/log/homebridge.log
NAME=homebridge
DAEMONUSER=homebridge
PIDDIR=/var/run/homebridge
PIDFILE=$PIDDIR/pid
DESC="HomeKit support for the impatient"
test -x $DAEMON || exit 0
. /lib/lsb/init-functions
start_it_up()
{
if [ ! -d $PIDDIR ]; then
mkdir -p $PIDDIR
chown $DAEMONUSER $PIDDIR
chgrp $DAEMONUSER $PIDDIR
fi
if ! mountpoint -q /proc/ ; then
log_failure_msg "Can't start $DESC - /proc is not mounted"
return
fi
if [ -e $PIDFILE ]; then
if $0 status > /dev/null ; then
log_success_msg "$DESC already started; not starting."
return
else
log_success_msg "Removing stale PID file $PIDFILE."
rm -f $PIDFILE
fi
fi
log_daemon_msg "Starting $DESC" "$NAME"
start-stop-daemon --start --quiet --chuid $DAEMONUSER --pidfile $PIDFILE \
--background --make-pidfile \
--startas /bin/bash -- -c "exec $DAEMON $PARAMS > $LOGFILE 2>&1"
log_end_msg $?
}
shut_it_down()
{
log_daemon_msg "Stopping $DESC" "$NAME"
start-stop-daemon --stop --retry 5 --quiet --oknodo --pidfile $PIDFILE \
--remove-pidfile --user $DAEMONUSER
log_end_msg $?
rm -f $PIDFILE
}
case "$1" in
start)
start_it_up
;;
stop)
shut_it_down
;;
restart)
shut_it_down
start_it_up
;;
status)
status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|restart|status}" >&2
exit 2
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment