Bash sám obsahuje příkaz ulimit kterým se dá omezit množstí procesorového času spotřebovaného programem.
… ( ulimit -t 300 # 5 minut program parametry )
Jen připomínám že se jedná o omezení procesorového času, tedy sčasu kdy je programu přidělen procesor. Nejedná se tedy o omzení celkové doby běhu programu. Toto omezení musíme provést jinak.
#!/bin/bash … # Killing process with all it's children. function killtree() { local -r parent=$1 local -r children=$(pgrep -P $parent) kill -s KILL $parent for child in $children; do killtree $child done } #killtree() ( program parametry )& program_pid=$! # Spawn the guardian. Guardian will watch the program and kill it if # it runs too long. ( sleep 20m # If we are there, program runs out of time. So kill it. killtree $program_pid )& guardian_pid=$! # Wait for the program or guardian to end. wait $program_pid program_status=$? if [[ $program_status == 137 ]]; then echo "Program killed because it runs out of time." wait $guardian_pid else echo "Program status is $program_status." killtree $guardian_pid fi …