-
-
Save BarnacleBob/cf1e14bbb29063e6bf2c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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