到目前为止我已经有了这个。问题是,如果pythoncode.py
在8*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'