Skip to content

Instantly share code, notes, and snippets.

@BarnacleBob
Created July 29, 2015 19:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save BarnacleBob/cf1e14bbb29063e6bf2c to your computer and use it in GitHub Desktop.
Save BarnacleBob/cf1e14bbb29063e6bf2c to your computer and use it in GitHub Desktop.
#!/bin/bash
MAX_JOBS=10
function filter_pids {
y=\$"$1" # Name of variable.
pidlist=`eval "expr \"$y\" "`
rpids=""
for pid in $pidlist; do
[ -e "/proc/$pid" ] && rpids="$rpids $pid"
done
eval "$1=\"$rpids\""
}
for server in $@; do
echo "launching $server"
ping -q -n -c1 -W 1 $server >/dev/null 2>&1 || { echo "$server: down"; continue; }
(
#ssh $server -t 'sudo service puppet stop; sudo rm -rf /var/lib/puppet/ssl; sudo puppet agent --test --waitforcert=30 --server=puppet.us-east-1.dkrll.com'
ssh $server -t 'sudo puppet agent --test --server=puppet.us-east-1.dkrll.com'
) > $server.log 2>&1 &
pids="$pids $!"
filter_pids pids
while [ "$(echo "$pids" | wc -w)" -ge "$MAX_JOBS" ]; do
echo "waiting for jobs"
sleep 1
filter_pids pids
done
done
while [ "$(echo "$pids" | wc -w)" -gt "0" ]; do
echo "waiting for last jobs($(echo "$pids" | wc -w))"
sleep 1
filter_pids pids
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment