From ae27153d0b1bd5650240e5f94c8c71a2f5f97861 Mon Sep 17 00:00:00 2001 From: coast Date: Fri, 2 Oct 2026 05:12:35 +0330 Subject: virtual/service-manager ebuild, new metadata for sys-apps/shepherd, new init scripts for shepherd --- sys-apps/shepherd/files/shepherd.initd | 83 ++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 sys-apps/shepherd/files/shepherd.initd (limited to 'sys-apps/shepherd/files') 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 -- cgit v1.2.3