From: Scott Baker Date: Wed, 9 Mar 2011 05:02:52 +0000 (+0000) Subject: check for stuck RPM processes X-Git-Tag: Mom-2.3-3~5 X-Git-Url: http://git.onelab.eu/?p=mom.git;a=commitdiff_plain;h=76d55c06310c3ff54b36a6f9e075499b2d8091a6;hp=e5359ba278f24c2775bdd1f2a585bf3025944f9c check for stuck RPM processes --- diff --git a/pl_mop.sh b/pl_mop.sh index a278230..454982e 100755 --- a/pl_mop.sh +++ b/pl_mop.sh @@ -187,10 +187,48 @@ kill_multi_nm(){ /etc/init.d/nm start fi } + +fix_rpm() { + echo "* Checking for stuck rpm processes" + + yum_count=`pgrep -f "yum clean all" | wc -l` + + if [[ $yum_count -ge 2 ]]; then + echo "* $yum_count yum processes found" + + # kill rpm processes, attempt up to 10 times and then give up + try_count=0 + rpm_count=`pgrep "rpm|yum" | wc -l` + while [[ $rpm_count -gt 0 ]]; do + echo "* killing rpm/yum processes" + killall -9 rpm rpmd rpmq rpmk yum + sleep 1 + rpm_count=`pgrep "rpm|yum" | wc -l` + try_count=`expr $try_count + 1` + if [[ $try_count -ge 10 ]]; then + echo "* failed to kill rpm processes" + return + fi + done + + # remove lock files + echo "* deleting rpm lock files" + rm -f /var/lib/rpm/__* + + # rebuild rpm database + echo "* rebuilding rpm database" + rpm --rebuilddb + + echo "* rpm repair sequence complete" + + fi +} + # XXX kill zombie slices run restart_services +run fix_rpm run kill_nonroot_nm