From 01ed277017cebee5f7e83dce2bb9935a43ce80a8 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Wed, 4 May 2016 13:04:17 +0200 Subject: Makefile neu, kleiner Bugfix, Versionsupdate --- .gitignore | 1 + Makefile | 41 +++++++++++++++++++++++++++++++++++++++ runjobsparallel | 50 ------------------------------------------------ runjobsparallel.in | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 98 insertions(+), 50 deletions(-) create mode 100644 .gitignore create mode 100644 Makefile delete mode 100755 runjobsparallel create mode 100755 runjobsparallel.in diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..707c689 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +runjobsparallel diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..970e015 --- /dev/null +++ b/Makefile @@ -0,0 +1,41 @@ +# +# runjobsparallel - skript for dcron to run daily/weekly/monthly-scripts parallelly instead of sequentially +# +# Copyright (c) 2016 Erich Eckner +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. +# + +DESTDIR = +BINDIR = /usr/bin +TMPDIR = /tmp + +VERSION = 0.1 + +all: runjobsparallel + +%: %.in + sed "s/#VERSION#/$(VERSION)/; s@#BINDIR#@$(BINDIR)@; s@#TMPDIR#@$(TMPDIR)@" $< > $@ + +.PHONY: install clean + +install: all + install -D -m0755 -t $(DESTDIR)$(BINDIR) runjobsparallel + +clean: + rm -f runjobsparallel + +# End of file diff --git a/runjobsparallel b/runjobsparallel deleted file mode 100755 index 763d301..0000000 --- a/runjobsparallel +++ /dev/null @@ -1,50 +0,0 @@ -#!/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 diff --git a/runjobsparallel.in b/runjobsparallel.in new file mode 100755 index 0000000..761aeee --- /dev/null +++ b/runjobsparallel.in @@ -0,0 +1,56 @@ +#!/bin/bash +# +# #BINDIR#/runjobsparallel: run all executables in specified directory parallel +# version #VERSION# +# + +if [ ! -d "$1" ] || [ $# -ne 1 ] +then + >&2 echo 'runjobsparallel version #VERSION#' + >&2 echo '' + >&2 echo "usage: $0 " + exit 1 +fi + +cd "$1" || exit 1 + +tmpDir=$(mktemp -d #TMPDIR#/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 + ps aux | awk '{print $2}' | grep -q "^${pids[${i}]}\$" && laeuftNoch=true || laeuftNoch=false + + if [ -r ${errFiles[${i}]} ] + then + curErr=$(cat "${errFiles[${i}]}") + [ ${curErr} -gt ${maxErr} ] && maxErr=${curErr} + elif ${laeuftNoch} + then + allesDa=false + else + echo 255 > "${errFiles[${i}]}" + maxErr=255 + fi + done +done + +rm -rf ${tmpDir} + +exit ${maxErr} + +# End of file -- cgit v1.2.3-54-g00ecf