From 285eb14bc4633b09c575137ce8426800a128f35c Mon Sep 17 00:00:00 2001 From: Akira Garcia Date: Wed, 17 Dec 2025 15:01:26 +0000 Subject: [PATCH 1/2] adjust rb-exporter init script to correctly manage pmacctd per interface --- src/systemd/rb-exporter | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/systemd/rb-exporter b/src/systemd/rb-exporter index d49b482..fceec3a 100644 --- a/src/systemd/rb-exporter +++ b/src/systemd/rb-exporter @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/bash # $Id$ # # rb-exporter Start/Stop the rb-exporter daemon. @@ -31,6 +31,7 @@ SYSTEMCTL_SKIP_REDIRECT=true RETVAL=0 +STARTED_ANY=0 prog="pmacctd" binary=/usr/sbin/pmacctd @@ -42,21 +43,35 @@ set_lock_file() { lockfile=/var/lock/rb-exporter-$1 } +cleanup_stale_state() { + if [ -f "$pidfile" ]; then + PID=$(cat "$pidfile") + if [ -n "$PID" ] && ! kill -0 "$PID" 2>/dev/null; then + echo "Found stale pidfile for $prog on $iface (PID $PID not running), cleaning up" + rm -f "$pidfile" + rm -f "$lockfile" + fi + fi +} + start() { + cleanup_stale_state + if [ -d /etc/rb-exporter/$iface -a -f /etc/rb-exporter/$iface/rb-exporter.conf ]; then OPTIONS="-i ${iface} -F ${pidfile} -f /etc/rb-exporter/$iface/rb-exporter.conf" [ -x $binary ] || exit 5 echo -n $"Starting $prog: on $iface " daemon --pidfile=$pidfile $binary $OPTIONS RETVAL=$? + [ $RETVAL -eq 0 ] && STARTED_ANY=1 [ $RETVAL -eq 0 ] && touch $lockfile echo return $RETVAL else echo "no config file for $prog on $iface" echo - return 0 + return 1 fi } @@ -176,5 +191,11 @@ do esac done + +if [ "$1" = "start" ] && [ "$STARTED_ANY" -eq 0 ]; then + echo "rb-exporter: no pmacctd instances were started" + exit 1 +fi + # echo $"RETVAL IS $RETVAL" exit $RETVAL \ No newline at end of file From f0577bbb9299b36a734bb274235cf1fb50f1b368 Mon Sep 17 00:00:00 2001 From: Akira Garcia Date: Tue, 23 Dec 2025 15:13:14 +0000 Subject: [PATCH 2/2] change remainafterexit configuration --- src/systemd/rb-exporter.service | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/systemd/rb-exporter.service b/src/systemd/rb-exporter.service index 7a963b2..5b2ac75 100644 --- a/src/systemd/rb-exporter.service +++ b/src/systemd/rb-exporter.service @@ -9,9 +9,9 @@ Type=forking TimeoutSec=30 IgnoreSIGPIPE=no GuessMainPID=no -RemainAfterExit=yes +#RemainAfterExit=yes Restart=no KillMode=process ExecStart=/etc/rc.d/init.d/rb-exporter start -ExecStop=/etc/rc.d/init.d/rb-exporter stop +ExecStop=/etc/rc.d/init.d/rb-exporter stop \ No newline at end of file