- Add PID directory creation in setup-directories.sh - Update start.sh to use /var/run/furt/furt.pid for both platforms - Fix OpenBSD rc.d script pidfile variable path - Correct systemd service PIDFile parameter path - Resolve rcctl check detection issues on OpenBSD Fixes service detection problems where rcctl check would show (failed) even when service was running. PID-file approach provides reliable cross-platform service status detection instead of fragile pexp patterns. Related DAW/furt#100
54 lines
1.3 KiB
Bash
54 lines
1.3 KiB
Bash
#!/bin/ksh
|
|
|
|
daemon="/usr/local/share/furt/scripts/start.sh"
|
|
daemon_user="_furt"
|
|
daemon_cwd="/usr/local/share/furt"
|
|
|
|
. /etc/rc.d/rc.subr
|
|
|
|
# PID-File location
|
|
pidfile="/var/run/furt/furt.pid"
|
|
|
|
# Custom rc_check function (PID-File based)
|
|
rc_check() {
|
|
[ -f "$pidfile" ] && kill -0 $(cat "$pidfile") 2>/dev/null
|
|
}
|
|
|
|
# Custom rc_stop function (PID-File based)
|
|
rc_stop() {
|
|
if [ -f "$pidfile" ]; then
|
|
local _pid=$(cat "$pidfile")
|
|
echo "Stopping furt (PID: $_pid)"
|
|
kill "$_pid" 2>/dev/null
|
|
# Wait for process to die
|
|
local _timeout=10
|
|
while [ $_timeout -gt 0 ] && kill -0 "$_pid" 2>/dev/null; do
|
|
sleep 1
|
|
_timeout=$((_timeout - 1))
|
|
done
|
|
# Force kill if still running
|
|
if kill -0 "$_pid" 2>/dev/null; then
|
|
echo "Force killing furt (PID: $_pid)"
|
|
kill -9 "$_pid" 2>/dev/null
|
|
fi
|
|
rm -f "$pidfile"
|
|
echo "furt stopped"
|
|
else
|
|
echo "furt not running (no PID-File)"
|
|
fi
|
|
}
|
|
|
|
# Custom rc_reload function (signal-based)
|
|
rc_reload() {
|
|
if rc_check; then
|
|
local _pid=$(cat "$pidfile")
|
|
echo "Reloading furt configuration (PID: $_pid)"
|
|
kill -HUP "$_pid"
|
|
else
|
|
echo "furt not running"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
rc_cmd $1
|
|
|