38 lines
675 B
Bash
38 lines
675 B
Bash
#!/bin/bash
|
|
checkworkers() {
|
|
local \
|
|
taskid \
|
|
parent_required \
|
|
parent_task
|
|
for key in ${!workers[@]}
|
|
do
|
|
if ! kill -0 ${workers[key]} 2>/dev/null
|
|
then
|
|
taskid=${workertasks[key]}
|
|
(( ++ran ))
|
|
(( active-- ))
|
|
if destroyworker $key
|
|
then
|
|
finishedtasks+=($taskid)
|
|
else
|
|
failedtasks+=($taskid)
|
|
(( ++failed ))
|
|
fi
|
|
parent_task=$(
|
|
Select tasks requires \
|
|
<<<"id = $taskid"
|
|
)
|
|
if (( parent_task ))
|
|
then
|
|
parent_required=$(
|
|
Select tasks required_by \
|
|
<<<"id = $parent_task"
|
|
)
|
|
Update tasks required_by $((--parent_required)) \
|
|
<<<"id = $parent_task"
|
|
fi
|
|
unset workertasks[key]
|
|
fi
|
|
done
|
|
}
|