Jelajahi Sumber

%status and pidfile handling

Michael van Elst 23 tahun lalu
induk
melakukan
6a11f6c338
4 mengubah file dengan 84 tambahan dan 43 penghapusan
  1. 36 25
      dss/rc.dss
  2. 18 9
      snmp/rc.snmp
  3. 26 9
      sysmon/rc.sysmon
  4. 4 0
      sysmon/sysmon.spec

+ 36 - 25
dss/rc.dss

@@ -7,40 +7,51 @@
     dss_enable="$openpkg_rc_def"
     dss_admin="no"
 
+%common
+    dss_daemon_pidfile="@l_prefix@/var/dss/dssdaemon.pid"
+    dss_admin_pidfile="@l_prefix@/var/dss/dssadmin.pid"
+    dss_signal () {
+        [ -f $dss_daemon_pidfile ] \
+        && kill -$1 `cat $dss_daemon_pidfile`
+        local rc=$?
+        if rcVarIsYes dss_admin; then
+            [ -f $dss_admin_pidfile ] \
+            && kill -$1 `cat $dss_admin_pidfile` \
+            && [ $rc -eq 0 ]
+            rc=$?
+        fi
+        [ $rc -eq 0 ]
+    }
+
+%status -u @l_susr@ -o
+    dss_usable="unknown"
+    dss_active="no"
+    rcService dss enable yes && \
+        dss_signal 0 && dss_active="yes"
+    echo "dss_enable=\"$dss_enable\""
+    echo "dss_usable=\"$dss_usable\""
+    echo "dss_active=\"$dss_active\""
+
 %start -u @l_susr@
     rcService dss enable yes || exit 0
     @l_prefix@/sbin/DarwinStreamingServer -d >/dev/null 2>&1 &
-    echo $! >@l_prefix@/var/dss/dssdaemon.pid
+    echo $! >$dss_daemon_pidfile
     if rcVarIsYes dss_admin; then
-        @l_prefix@/sbin/streamingadminserver -c @l_prefix@/etc/dss/streamingadmin.conf
+        @l_prefix@/sbin/streamingadminserver \
+            -c @l_prefix@/etc/dss/streamingadmin.conf \
+            >/dev/null 2>&1 &
+        echo $! >$dss_admin_pidfile
     fi
 
 %stop -u @l_susr@
     rcService dss enable yes || exit 0
-    if [ -f @l_prefix@/var/dss/dssdaemon.pid ]; then
-        kill -TERM `cat @l_prefix@/var/dss/dssdaemon.pid`
-        rm @l_prefix@/var/dss/dssdaemon.pid
-    fi
-    if rcVarIsYes dss_admin; then
-        if [ -f @l_prefix@/var/dss/dssadmin.pid ]; then
-            kill -TERM `cat @l_prefix@/var/dss/dssadmin.pid`
-            rm @l_prefix@/var/dss/dssadmin.pid
-        fi
-    fi
+    dss_signal TERM
+    rm -f $dss_daemon_pidfile 2>/dev/null || true
+    rm -f $dss_admin_pidfile 2>/dev/null || true
 
 %restart -u @l_susr@
     rcService dss enable yes || exit 0
-    if [ -f @l_prefix@/var/dss/dssdaemon.pid ]; then
-        kill -TERM `cat @l_prefix@/var/dss/dssdaemon.pid`
-        rm @l_prefix@/var/dss/dssdaemon.pid
-    fi
-    @l_prefix@/sbin/DarwinStreamingServer -d >/dev/null 2>&1 &
-    echo $! >@l_prefix@/var/dss/dssdaemon.pid
-    if rcVarIsYes dss_admin; then
-        if [ -f @l_prefix@/var/dss/dssadmin.pid ]; then
-            kill -TERM `cat @l_prefix@/var/dss/dssadmin.pid`
-            rm @l_prefix@/var/dss/dssadmin.pid
-        fi
-        @l_prefix@/sbin/streamingadminserver -c @l_prefix@/etc/dss/streamingadmin.conf
-    fi
+    rc dss stop
+    sleep 2
+    rc dss start
 

+ 18 - 9
snmp/rc.snmp

@@ -12,16 +12,27 @@
     snmp_log_complevel="9"
 
 %common
+    snmp_pidfile="@l_prefix@/var/snmp/snmpd.pid"
+    snmp_config="@l_prefix@/etc/snmp/snmpd.conf"
     snmp_signal () {
-        if [ -f "@l_prefix@/var/snmp/snmpd.pid" ]; then
-            kill -$1 `cat @l_prefix@/var/snmp/snmpd.pid`
-        fi
+        [ -f $snmp_pidfile ] && kill -$1 `cat $snmp_pidfile`
     }
 
+%status -u @l_susr@ -o
+    snmp_usable="no"
+    snmp_active="no"
+    rcService snmp enable yes && \
+        [ -f $snmp_config ] && snmp_usable="yes"
+    rcService snmp enable yes && \
+        snmp_signal 0 && snmp_active="yes"
+    echo "snmp_enable=\"$snmp_enable\""
+    echo "snmp_usable=\"$snmp_usable\""
+    echo "snmp_active=\"$snmp_active\""
+
 %start -u @l_susr@
     rcService snmp enable yes || exit 0
-    if [ -f @l_prefix@/etc/snmp/snmpd.conf ]; then
-        @l_prefix@/sbin/snmpd -s -P @l_prefix@/var/snmp/snmpd.pid
+    if [ -f $snmp_config ]; then
+        @l_prefix@/sbin/snmpd -s -P $snmp_pidfile
     fi
 
 %stop -u @l_susr@
@@ -30,11 +41,9 @@
 
 %restart -u @l_susr@
     rcService snmp enable yes || exit 0
-    snmp_signal TERM
+    rc snmp stop
     sleep 2
-    if [ -f @l_prefix@/etc/snmp/snmpd.conf ]; then
-        @l_prefix@/sbin/snmpd -s -P @l_prefix@/var/snmp/snmpd.pid
-    fi
+    rc snmp start
 
 %daily -u @l_susr@
     rcService snmp enable yes || exit 0

+ 26 - 9
sysmon/rc.sysmon

@@ -10,23 +10,40 @@
     sysmon_log_numfiles="10"
     sysmon_log_minsize="1M"
     sysmon_log_complevel="9"
+    sysmon_stop_timeout="60"
 
 %common
-    sysmon_pidfile="@l_prefix@/var/sysmon/sysmon.pid"
+    sysmon_pidfile="@l_prefix@/var/sysmon/sysmond.pid"
+    sysmon_signal () {
+        [ -f $sysmon_pidfile ] && kill -$1 `cat $sysmon_pidfile`
+    }
+
+%status -u @l_susr@ -o
+    sysmon_usable="unknown"
+    sysmon_active="no"
+    rcService sysmon enable yes && \
+        sysmon_signal 0 && sysmon_active="yes"
+    echo "sysmon_enable=\"$sysmon_enable\""
+    echo "sysmon_usable=\"$sysmon_usable\""
+    echo "sysmon_active=\"$sysmon_active\""
 
 %start -u @l_susr@
     rcService sysmon enable yes || exit 0
-    rcTmp -i -p sysmon
-    logfile=`rcTmp -f -n log`
-    @l_prefix@/sbin/sysmond -q -f @l_prefix@/etc/sysmon/sysmon.conf >$logfile 2>&1
-    grep "pid" $logfile | sed -e 's;^.*pid \([0-9]*\).*$;\1;' >$sysmon_pidfile
-    rcTmp -k
+    @l_prefix@/sbin/sysmond -q -f @l_prefix@/etc/sysmon/sysmon.conf >/dev/null 2>&1
 
 %stop -u @l_susr@
     rcService sysmon enable yes || exit 0
-    if [ -f $sysmon_pidfile ]; then
-        kill -TERM `cat $sysmon_pidfile`
-    fi
+    sysmon_signal TERM
+
+%restart -u @l_susr@
+    rcService sysmon enable yes || exit 0
+    rc sysmon stop
+    sleep 2
+    rc sysmon start
+
+%reload -u @l_susr@
+    rcService sysmon enable yes || exit 0
+    sysmon_signal HUP
 
 %daily -u @l_susr@
     rcService sysmon enable yes || exit 0

+ 4 - 0
sysmon/sysmon.spec

@@ -67,6 +67,10 @@ AutoReqProv:  no
     %setup -q
 
 %build
+    #   force pidfile path
+    %{l_shtool} subst \
+        -e 's;\(#define PIDFILE\).*;\1 "%{l_prefix}/var/sysmon/sysmond.pid";' \
+        src/config.h
     #   force use of ncurses
     echo "ac_cv_lib_curses_refresh=no" >config.cache
     CC="%{l_cc}" \