From 59f372f2b0b5f6ff3dff087f9ae0411dd9c41f2e Mon Sep 17 00:00:00 2001 From: michael Date: Sun, 7 Sep 2025 16:57:35 +0200 Subject: [PATCH] feat(service): implement PID-file based service management - 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 --- deployment/linux/furt.service | 2 +- deployment/openbsd/rc.d-furt | 2 +- scripts/setup-directories.sh | 3 +++ scripts/start.sh | 4 ++-- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/deployment/linux/furt.service b/deployment/linux/furt.service index 123b14c..a504d30 100644 --- a/deployment/linux/furt.service +++ b/deployment/linux/furt.service @@ -7,7 +7,7 @@ Type=forking User=furt Group=furt ExecStart=/usr/local/share/furt/scripts/start.sh -PIDFile=/var/run/furt.pid +PIDFile=/var/run/furt/furt.pid WorkingDirectory=/usr/local/share/furt Restart=always RestartSec=5 diff --git a/deployment/openbsd/rc.d-furt b/deployment/openbsd/rc.d-furt index 8a5bc50..bcdb4b9 100644 --- a/deployment/openbsd/rc.d-furt +++ b/deployment/openbsd/rc.d-furt @@ -7,7 +7,7 @@ daemon_cwd="/usr/local/share/furt" . /etc/rc.d/rc.subr # PID-File location -pidfile="/var/run/furt.pid" +pidfile="/var/run/furt/furt.pid" # Custom rc_check function (PID-File based) rc_check() { diff --git a/scripts/setup-directories.sh b/scripts/setup-directories.sh index 2fdbad6..97cc02f 100755 --- a/scripts/setup-directories.sh +++ b/scripts/setup-directories.sh @@ -18,12 +18,15 @@ fi mkdir -p "$CONFIG_DIR" mkdir -p /usr/local/share/furt mkdir -p /var/log/furt +mkdir -p /var/run/furt # Set ownership for log directory (service user needs write access) chown "$USER:$GROUP" /var/log/furt +chown "$USER:$GROUP" /var/run/furt echo "Created directories:" echo " Config: $CONFIG_DIR" echo " Share: /usr/local/share/furt" echo " Logs: /var/log/furt (owned by $USER)" +echo " PID: /var/run/furt (owned by $USER)" diff --git a/scripts/start.sh b/scripts/start.sh index 69b117b..41db621 100755 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -19,10 +19,10 @@ LUA_COMMAND="" # Config check first if [ "$(uname)" = "OpenBSD" ] || [ "$(uname)" = "FreeBSD" ]; then CONFIG_FILE="/usr/local/etc/furt/furt.conf" - PID_FILE="/var/run/furt.pid" + PID_FILE="/var/run/furt/furt.pid" else CONFIG_FILE="/etc/furt/furt.conf" - PID_FILE="/var/run/furt.pid" + PID_FILE="/var/run/furt/furt.pid" fi if [ ! -f "$CONFIG_FILE" ] && [ ! -f "$PROJECT_DIR/config/furt.conf" ]; then