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

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

到目前为止我有这个。问题是,如果在几秒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

我是一个初学者,所以解释一下这个例子具体要做什么,而不是一个一般的答案。谢谢,新年快乐。

答案1

您可以在后台调用 python 脚本并使用 sleep 函数作为计时器:

#Execute the script in the background
python3 /Users/Name/Desktop/pythoncode.py & 
#Get its process id
pypid=$!
#Wait for the needed period in seconds
sleep "$end"
#Then force the process to be terminated
kill -9 $pypid

相关内容