diff options
| author | coast <coasteen@proton.me> | 2026-10-02 05:12:35 +0330 |
|---|---|---|
| committer | coast <coasteen@proton.me> | 2026-10-02 05:12:35 +0330 |
| commit | ae27153d0b1bd5650240e5f94c8c71a2f5f97861 (patch) | |
| tree | 398cfbcdd4891bedba0ac0dc6fa201e183422e42 /sys-apps/shepherd/files/shepherd.initd | |
| parent | d701789dbaef3a5a39b93a47c3232999662325e5 (diff) | |
virtual/service-manager ebuild, new metadata for sys-apps/shepherd, new
init scripts for shepherd
Diffstat (limited to 'sys-apps/shepherd/files/shepherd.initd')
| -rw-r--r-- | sys-apps/shepherd/files/shepherd.initd | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/sys-apps/shepherd/files/shepherd.initd b/sys-apps/shepherd/files/shepherd.initd new file mode 100644 index 0000000..c56b518 --- /dev/null +++ b/sys-apps/shepherd/files/shepherd.initd @@ -0,0 +1,83 @@ +#!/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 |
