#!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin NAME=shepherd DAEMON=/usr/bin/shepherd PIDFILE=/run/shepherd.pid CONFIG=/etc/shepherd.scm case "$1" in start) echo "Starting Shepherd service manager..." if [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null then echo "Shepherd is already running." exit 0 fi mkdir -p /run/shepherd chmod 755 /run/shepherd "$DAEMON" \ --config="$CONFIG" \ --pid="$PIDFILE" exit $? ;; stop) echo "Stopping Shepherd service manager..." if [ ! -f "$PIDFILE" ]; then echo "Shepherd is not running." exit 0 fi PID="$(cat "$PIDFILE")" if kill -0 "$PID" 2>/dev/null; then kill -TERM "$PID" i=0 while kill -0 "$PID" 2>/dev/null; do i=$((i + 1)) if [ "$i" -ge 50 ]; then kill -KILL "$PID" 2>/dev/null break fi sleep 0.1 done fi rm -f "$PIDFILE" exit 0 ;; restart) "$0" stop "$0" start ;; status) if [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null then echo "Shepherd is running (PID $(cat "$PIDFILE"))." exit 0 fi echo "Shepherd is not running." exit 3 ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac