#!/bin/bash # # /usr/sbin/runjobsparallel: run all executables in specified directory parallel # if [ "$1" = "" ]; then echo "usage: $0 " exit 1 fi cd $1 || exit 1 tmpDir=$(mktemp -d /tmp/runjobsparallel.XXXXXX) for file in ./*; do if [ -f $file ] && [ -x $file ]; then i=${#errFiles[@]} errFiles[${i}]="${tmpDir}/err.${i}" (nice -n 19 $file; echo $? > ${errFiles[${i}]})& pids[${i}]=$! fi done allesDa=false while ! ${allesDa} do sleep 1 allesDa=true maxErr=0 for ((i=0; i<${#errFiles[@]}; i++)) do if [ -r ${errFiles[${i}]} ] then curErr=$(cat "${errFiles[${i}]}") [ ${curErr} -gt ${maxErr} ] && maxErr=${curErr} elif ps aux | awk '{print $2}' | grep -q "^${pids[${i}]}\$" then allesDa=false else echo 255 > "${errFiles[${i}]}" maxErr=255 fi done done rm -rf ${tmpDir} exit ${maxErr} # End of file