PATH="$PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
PID="/var/run/puppet/<%= puppet_agent_name %>.pid"
INIT="/etc/init.d/puppet"
+LOCKFILE="/var/run/puppet/check-puppetd.pid"
function puppet_start {
+
sleep `echo $RANDOM/2000*60 | bc`
$INIT start
+
}
function puppet_restart {
+
$INIT stop
puppet_start
+
+}
+
+function set_lockfile {
+
+ if [ ! -z "$LOCKFILE" ]; then
+ mkdir -p `dirname $LOCKFILE`
+ if ( set -o noclobber; echo "$$" > "$LOCKFILE" ) &> /dev/null; then
+ trap 'unset_lockfile' INT TERM EXIT
+ else
+ echo "Could not create lockfile $LOCKFILE, exiting"
+ exit 1
+ fi
+ fi
+
+}
+
+function unset_lockfile {
+
+ if [ ! -z "$LOCKFILE" ]; then
+ $rm -f $LOCKFILE || echo "Could not remove lockfile $LOCKFILE"
+ fi
+
}
+function check_lockfile {
+
+ local pid process
+
+ if [ ! -z "$LOCKFILE" ] && [ -f "$LOCKFILE" ]; then
+ pid="`cat $LOCKFILE`"
+ process="`ps --no-headers -o comm $pid`"
+ if [ "$?" == "0" ] && [ "`ps --no-headers -o comm $$`" == "$process" ]; then
+ echo "Another backup is running for $LOCKFILE, skipping run"
+ exit
+ else
+ echo "Found old lockfile $LOCKFILE, removing it"
+ unset_lockfile
+ fi
+ fi
+
+}
+
+check_lockfile
+set_lockfile
+
if [ "$1" == "restart" ]; then
puppet_restart
elif [ ! -f "$PID" ]; then
puppet_start
fi
fi
+
+unset_lockfile