是否有一种方法可以根据CPU执行该程序的实际时间而不是由墙上的时钟时间来实现Linux中的程序超时?这可能是因为系统负载很重,或者有大量的上下文开关会使墙时钟超时测量结果无法比较。我正在寻找Python、C或Bash的解决方案。
发布于 2015-12-10 16:28:25
下面是我编写的类似于超时命令的shell脚本。
ctimeout timeout command arg ...如果该命令的CPU时间超过超时值(以秒为单位),则该命令将被终止。
它使用超极限-t内置命令。底层系统调用七度限以CPU时间的秒数作为参数,因此超时参数应该是一个整数。巴什的ulimit -t拒绝使用小数点的参数。ksh接受带有小数点的参数,但舍入到最接近的整秒。
任何带有嵌入式空格的参数都应该被\'或\"包围。
#!/bin/sh
if test $# -lt 2
then
echo "Usage: $0 timeout command arg ..."
exit 126
fi
ulimit -t $1 || { echo "Error: cannot set timeout $1"; exit 126; }
shift
eval "$@"https://stackoverflow.com/questions/34206171
复制相似问题