Add check_zombies_php-cgi.sh

This commit is contained in:
Christoph 2017-03-02 13:32:18 +01:00
parent 658dd5e210
commit 8b3efa1405

123
check_zombies_php-cgi.sh Executable file
View File

@ -0,0 +1,123 @@
#!/usr/bin/env bash
#---------------------------------------
#-----------------------------
# Settings
#-----------------------------
#---------------------------------------
# - Is this script running on terminal ?
# -
if [[ -t 1 ]] ; then
terminal=true
LOGGING=true
else
terminal=false
LOGGING=false
fi
php_cgi=$(realpath $(which php-cgi))
KILL_SIGNAL=HUP
#---------------------------------------
#-----------------------------
# Base Function(s)
#-----------------------------
#---------------------------------------
fatal(){
echo ""
echo -e " [ Fatal ] $*"
echo ""
echo -e "\tScript terminated.."
echo ""
exit 1
}
error (){
echo ""
echo -e " [ Error ] $*"
echo ""
}
warn (){
echo ""
echo -e " [ Warn ] $*"
echo ""
}
info (){
echo ""
echo -e " [ Info ] $*"
echo ""
}
ok (){
echo ""
echo -e " [ Ok ] $*"
echo ""
}
#---------------------------------------
#-----------------------------
# Check some prerequisites
#-----------------------------
#---------------------------------------
if [ -z "`which basename`" ]; then
fatal 'It seems "basename" is not installed, but needed!'
fi
if [ -z "`which realpath`" ]; then
fatal 'It seems "realpath" is not installed, but needed!'
fi
#---------------------------------------
#-----------------------------
# Jobhandling
#-----------------------------
#---------------------------------------
#LOCK_DIR=`mktemp -d`
## - Remove lockdir when the script finishes, or when it receives a signal
#trap 'rm -rf "$LOCK_DIR"' 0 2 15
#---------------------------------------
#-----------------------------
# Checking ..
#-----------------------------
#---------------------------------------
if $LOGGING ; then
echo -e "\nChecking for zombie processes \"$php_cgi\" on \"`hostname -f`\".."
fi
if `ps -Ao"stat,command" | grep "$(basename $php_cgi)" | grep -v grep | grep -e '^[zZ]' > /dev/null 2>&1` ; then
warn "Found Zombie Processes \"$php_cgi\" on \"`hostname -f`\":\n"
ps -Ao"stat,user,pid,ppid,command" | grep "$(basename $php_cgi)" | grep -v grep | grep -e '^[zZ]'
membefore=`cat /proc/meminfo | grep Committed_AS | awk '{print $2}'`
info "Trying a graceful kill to the concerning parents with signal \"$KILL_SIGNAL\".."
ps -Ao"stat,pid,ppid,command" | grep "$(basename $php_cgi)" | grep -v grep | grep -e '^[zZ]' \
| awk '{ print $3 }' | sort -u | xargs --no-run-if-empty kill -$KILL_SIGNAL
if [ "$?" = "0" ];then
sleep 10
ok "Cleaning up zombie processes \"$php_cgi\" seems succsessfully finisched"
memafter=`cat /proc/meminfo | grep Committed_AS | awk '{print $2}'`
info "`expr $membefore - $memafter` KB RAM has been freed"
else
error "Cleaning up zombie processes \"$php_cgi\" failed!"
fi
else
if $LOGGING ; then
ok "No zombie prossses found"
fi
fi
exit 0