У меня есть Uni-задание, которое я создаю, и которое мне нужно запустить несколько раз с несколькими различными параметрами, чтобы проверить время выполнения. На данный момент у меня есть простой bash-скрипт, похожий на приведенный ниже - он записывает, что он делает, и time
каждого теста, все нормальные результаты отбрасываются (я проверяю правильность в другом месте, не волнуйтесь).
Проблема в том, что иногда (и это довольно редко) master
процессы застревают и никогда не завершаются, что, очевидно, мешает завершению тестового прогона. Я работаю над исправлением этой проблемы, очевидно, но алгоритм в порядке, поэтому я все же хотел бы продолжить тестирование, так как приближается дата сдачи.
Итак, я хотел бы каким-то образом указать максимальное время выполнения процессов, и если они превышают это, я хочу, чтобы они автоматически завершались (предпочтительно с помощью SIGINT
или другого идентифицированного сигнала), а затем скрипт продолжал со следующей записи , Или любая подходящая альтернатива, которая имеет такой же результат.
Предложения?
Фрагмент того, что у меня есть на данный момент:
#!/bin/bash
echo "starting tests: clearing output file" > log
echo "running single tests" >> log
echo " starting 16" >> log
time (./single 16) 1> /dev/null 2>> log
time (./single 16) 1> /dev/null 2>> log
time (./single 16) 1> /dev/null 2>> log
#etc
echo "running multi tests" >> log
echo " starting 16 1 1 1" >> log
time (./master 16 4 7 100) 1> /dev/null 2>> log
time (./master 16 4 7 100) 1> /dev/null 2>> log
time (./master 16 4 7 100) 1> /dev/null 2>> log
#etc