如果bash中的while循环条件未得到满足,则终止python代码而不让它完成



到目前为止我已经有了这个。问题是,如果pythoncode.py8*60*60秒之前启动,那么它仍然可以在8*60*60秒之后继续运行,直到它完成,只有到那时它才会停止。我需要它精确地终止pythoncode.py(松散地说,+/-1秒不是问题(8*60*60秒,即使它正在运行。

#! /bin/bash
end=$((SECONDS+8*60*60))
while [ $SECONDS -lt $end ]; do
python3 /Users/Name/Desktop/pythoncode.py
done

我是一个初学者,所以解释这个例子的具体操作会比一般答案更令人感激。

您的循环不起作用,因为python3会阻塞,直到pythoncode.py(自行(终止。要手动终止它,您必须并行运行检查(例如,通过预处理&并将循环放在(!(python之后(,并且必须调用类似kill的东西来强制终止命令。

或者,使用GNUtimeout(来自GNU coreutils(,它是为这样的东西设计的
在这里,我们重复运行python脚本整整八个小时。最后一次运行很可能会被强制终止。

timeout 8h sh -c 'while true; do python3 /Users/Name/Desktop/pythoncode.py; done'

相关内容

  • 没有找到相关文章

最新更新