sysstat/sysstat-8.1.6-sa1sa2lock.diff

59 lines
1.7 KiB
Diff

Index: sysstat-12.6.0/sa1.in
===================================================================
--- sysstat-12.6.0.orig/sa1.in
+++ sysstat-12.6.0/sa1.in
@@ -31,8 +31,14 @@ then
LONG_NAME=y
fi
+set -e
ENDIR=@SA_LIB_DIR@
cd ${ENDIR}
+LOCKFILE=/var/run/sysstat/sadc.LOCK
+mkdir -p /var/run/sysstat
+lockfile -r2 -30 "$LOCKFILE" 2>/dev/null
+trap "/bin/rm -f $LOCKFILE" EXIT
+
[ "$1" = "--boot" ] && shift && BOOT=y || BOOT=n
[ "$1" = "--sleep" ] && shift && SLEEP=y || SLEEP=n
@@ -51,13 +57,13 @@ fi
if [ "${SLEEP}" = "y" ]
then
- exec ${ENDIR}/sadc -F -L ${SADC_OPTIONS} -C "LINUX SLEEP MODE ($*)" ${SA_DIR}
+ ${ENDIR}/sadc -F -L ${SADC_OPTIONS} -C "LINUX SLEEP MODE ($*)" ${SA_DIR}
elif [ $# = 0 ] && [ "${BOOT}" = "n" ]
then
# Note: Stats are written at the end of previous file *and* at the
# beginning of the new one (when there is a file rotation) only if
# outfile has not been explicitly specified on the command line...
- exec ${ENDIR}/sadc -F -L ${SADC_OPTIONS} 1 1 ${SA_DIR}
+ ${ENDIR}/sadc -F -L ${SADC_OPTIONS} 1 1 ${SA_DIR}
else
- exec ${ENDIR}/sadc -F -L ${SADC_OPTIONS} $* ${SA_DIR}
+ ${ENDIR}/sadc -F -L ${SADC_OPTIONS} $* ${SA_DIR}
fi
Index: sysstat-12.6.0/sa2.in
===================================================================
--- sysstat-12.6.0.orig/sa2.in
+++ sysstat-12.6.0/sa2.in
@@ -59,6 +59,17 @@ fi
[ -f "${DFILE}" ] || exit 0
cd ${ENDIR}
+
+LOCKFILE=/var/run/sysstat/sadc.LOCK
+mkdir -p /var/run/sysstat
+if ! lockfile -r6 -600 $LOCKFILE 2>/dev/null; then
+ if test `find $LOCKFILE -mmin +180 2>/dev/null`; then
+ rm -f $LOCKFILE
+ logger -p cron.alert "$0: detected an old lockfile \"$LOCKFILE\"."
+ fi
+fi
+trap "/bin/rm -f $LOCKFILE" EXIT
+
if [ x${REPORTS} != xfalse ]
then
${ENDIR}/sar $* -f ${DFILE} > ${RPT}