#!/bin/bash tmpDir="$(mktemp -d)" declare -A cmds declare -A pIDs declare -A running cmds['arch']='ssh nlopc43 eigeneSkripte/archPackages/checkVersions -f -j250' cmds['crux']='/usr/src/ports/lastVersion.sh' cmds['debian']='ssh router pakete/checkVersions -f' for dist in "${!cmds[@]}" do ( ( time ( ${cmds["${dist}"]} &> "${tmpDir}/${dist}" ) ) 2> "${tmpDir}/${dist}.time" || echo "err: $?" >> "${tmpDir}/${dist}" ) & pIDs["${dist}"]=$! running["${dist}"]=true done set -o pipefail run=true while ${run} do sleep 1 run=false for dist in "${!pIDs[@]}" do if ! ps aux | \ awk '{print $2}' | \ grep -q "^${pIDs["${dist}"]}\$" then running["${dist}"]=false if [ -s "${tmpDir}/${dist}" ] then sleep 1 echo -n "${dist} (" grep '^real' "${tmpDir}/${dist}.time" | \ awk '{print $2"):"}' cat "${tmpDir}/${dist}" echo fi rm -f "${tmpDir}/${dist}" "${tmpDir}/${dist}.time" fi if ${running["${dist}"]} then run=true fi done done rmdir "${tmpDir}"