Prosty scheduler

0

Mam do wykonania ileś tam zadań (skryptów shellowych). Część z nich może wykonywać się równolegle, niektóre nie mogą się rozpocząć przed zakończeniem innych (np. taskA nie może się rozpocząć przed zakończeniem taskX i taskY).

Nie chce mi się pisać schedulera, wolałbym użyć jakiegoś gotowca i napisać konfigurację: wykonaj skrypty (S1,...,S100), zależności są takie: S50: S1, S10, S20, S60:S8, S50, S34 itd.
Ktoś kojarzy jakieś narzędzie proste?

0

CRON + Prallel lub Task Scheduler + PowerShell.

0
Afish napisał(a):

CRON + Prallel lub Task Scheduler + PowerShell.

Mam wrażenie, że ten Parallel to ładuje do kolejki ileś tam zadań i są one uruchamiane przez N procesów, ale nie ma funkcjonalności, która pozawalała by zdefiniować zależności, a mnie chodzi o coś jak poniżej, tyle że nie wersja dla ubogich, a jakiś gotowiec pozwalający kontrolować: zależności i ilość procesów pracujących. Wydaje mi się, że jednak trzeba będzie sobie coś takiego napisać.

#!/bin/bash

function watchDependency(){ 
	TASK_ID="${1}"
	
	if [ -z "${TASK_ID}" ]; then 
		echo "TASK_ID required as an argument for watchDependency function"
		exit 10
	fi 
	
	while [ ! -f "${TASK_ID}" ]; do 
		echo "Waiting for ${TASK_ID} completion";
		sleep 1;
	done 
}

function Task1() {
	echo "TASK1 started."
	sleep 10
	touch TASK1
	echo "TASK1 finished."
}

function Task2() {
	echo "TASK2 started."
	sleep 5
	touch TASK2
	echo "TASK2 finished."
}

function Task3() {
	echo "TASK3 started."
	watchDependency TASK1 & 
	watchDependency TASK2 & 
	wait 
	touch TASK3
	echo "TASK3 finished."
}



function Task4() {
        echo "TASK4 started."
        watchDependency TASK3 &
        wait
        touch TASK4
        echo "TASK4 finished."
}



echo "Running master job" 
Task1 & 
Task2 & 
Task3 & 
Task4 &
wait

rm TASK*
echo "DONE"

0

W jednym wątku chcesz zrobić planistę?

Nic prostszego, to możesz zmierzyć wielkość kodu źródłowego, i przy przesunięciu wskaźnika rejestru EIP co ileś bajtów, zmieniać aktualnie wykonywane zadanie.

Proste do wykonania dla ludzi, którzy lubią overenginnering :)

1

Zwykły make umożliwia zbudowanie zależności pomiędzy procesami i uruchomienie z kontrolowaną ilością maksymalnych wątków.

1 użytkowników online, w tym zalogowanych: 0, gości: 1