Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save sergeyhush/5a1487fd4ba99627fdfd to your computer and use it in GitHub Desktop.
Save sergeyhush/5a1487fd4ba99627fdfd to your computer and use it in GitHub Desktop.
#! /bin/bash
# Kill processes orphaned by Jenkins
# Work around Java's use of SIGTERM rather than SIGKILL and
# Jenkins's lack of any workaroud in the box.
# Suggested usage:
#
# $ crontab -l
# */5 0 0 0 0 /path/to/kill-processes-orphaned-by-jenkins.sh 2>&1 | logger
# Tested on Mac OS X (BSD). Probably needs `ps` arguments
# ported for Linux (GNU).
for url in $(ps -wwEf | grep BUILD_URL | grep -v ' grep' | tr ' ' '\n' | grep BUILD_URL | sort | uniq | awk -F'=' '{ print $2 }')
do
# Get your API token from
# http://<jenkins-host>/user/<user>/configure > Show API
# Token...
curl -s -u '<user>:<token>' "$url"'/api/json?tree=building' | grep -q true
building=$?
false=1
if [ $building -eq $false ]
then
for pid in $(ps -wwEf | grep "$url" | grep -v ' grep' | awk '{ print $2 }')
do
echo 'Finished job: '"$url"
echo 'Killing process orphaned by Jenkins:'
ps -f -p $pid
echo
kill -9 $pid
done
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment