强制运行 bash 脚本直至完成,但某些项目可能会卡住

强制运行 bash 脚本直至完成,但某些项目可能会卡住

我正在写一个大学作业,需要用多个不同的参数多次运行来检查运行时间。目前我有一个简单的 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

“如何运行命令,并让其在 N 秒后中止(超时)?”,BASH 常见问题解答条目 #68

相关内容