diff --git a/daemonize.sh b/daemonize.sh new file mode 100755 index 0000000..1d04377 --- /dev/null +++ b/daemonize.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +NAME="ifconfig" +IFC_PATH=$(dirname $(readlink -f $0)) +LOCK_FILE="$IFC_PATH/$NAME.lock" +PID_FILE="$IFC_PATH/$NAME.pid" +BIN="$IFC_PATH/$NAME" + +E_USAGE=1 +E_NOTFOUND=2 +E_NOPID=3 +E_LOCKED=4 + +if [[ ! -x "$BIN" ]]; then + echo "$BIN does not exist or is not executable" + exit $E_NOTFOUND +fi + +case "$1" in + start) + if [[ -f "$LOCK_FILE" ]]; then + echo "Lock file $LOCK_FILE exists. Already running?" + exit $E_LOCKED + fi + echo "Starting $NAME" + daemonize -c $IFC_PATH -o ${NAME}.log -p $PID_FILE -l $LOCK_FILE $BIN + ;; + stop) + if [[ ! -s "$PID_FILE" ]]; then + echo "PID file $PID_FILE empty or not found. Not started?" + exit $E_NOPID + fi + PID=$(head -n1 $PID_FILE) + echo "Stopping $NAME: $PID" + kill $PID && rm -- $PID_FILE $LOCK_FILE + ;; + status) + if [[ ! -s "$PID_FILE" ]]; then + echo "$NAME is not running" + else + echo "$NAME is running: $(head -n1 $PID_FILE)" + fi + ;; + *) + echo "usage: $0 {start|stop|status}" + exit $E_USAGE + ;; +esac