#!/bin/bash set -m timeout=$1 shift cmd=$@ echo "timeout: ${timeout}" echo "cmd : ${cmd}" eval "${cmd}" & cmdpid=$! stopit() { echo "TIMEOUT: ${cmd} took > ${timeout} seconds" echo "sending SIGINT" echo kill -INT -- -$cmdpid kill -INT -- -$cmdpid; } ( sleep ${timeout} ; stopit; ) & timeoutpid=$! wait $cmdpid kill $timeoutpid >& /dev/null