This local check for check_mk is useful with services who won’t start if an old or incorrect pid file remains. I needed to write it because this is the very case of the postfix version embedded with zimbra.
The code is self-explanatory :
#!/bin/bash
# Cyril Pawelko https://www.pawelko.net/check-mk-check_pid/
# Version 1
# Checks if the PID referenced in a PIDFILE exists
# This is a "local" check_mk check for *NIX:
# - Rename it if you need several checks on the same host
# - Copy to check-mk local checks directory (/usr/lib/check_mk_agent/local on Debian)
# - Customize with the PID file path:
PIDFILE="/opt/zimbra/data/postfix/spool/pid/master.pid"
if [ ! -r $PIDFILE ]
then echo 3 Pid_$PIDFILE - File $PIDFILE cannot be read
exit
fi
PID=$(cat $PIDFILE )
PID=${PID//[^0-9]/}
if ps $PID > /dev/null
then echo 0 Pid_$PIDFILE - Process $PID referenced in $PIDFILE is running
else echo 2 Pid_$PIDFILE - Process $PID referenced in $PIDFILE does not exist
fi
Have fun !