3

У меня есть 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

1 ответ1

5

"Как запустить команду и прервать ее (через тайм-аут) через N секунд?"BASH FAQ # 68.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .