如何在循环中执行和中断脚本

如何在循环中执行和中断脚本

我有一个名为“demo.py首先我执行脚本”的脚本

python demo.py -some arguments

一段时间后(假设 120 秒)我用Ctrl+中断它C并再次执行。我可以编写一个 bash 脚本来自动循环执行这些步骤吗?

答案1

python demo.py -some arguments &
( sleep 120; kill -TSTP "$!")  & 
fg %1

将首先进入后台python,然后启动一个后台 shell,该 shellsleep持续 120 秒,然后发送python--TSTP暂停信号。这与按并不严格相同CTRL+C- 你想要的kill -INT "$!"- 但我想你可能希望能够再次恢复它,因为这就像做CTRL+Z反而。

最后它fg 前景作业 ID %1- 如果这是表中仅有的两个进程jobs,则该 ID 将为python

于是你就demo开始奔跑,而一个等待者kill则潜伏在阴影中。

等待cat5 秒:

cat & ( sleep 5; kill -TSTP "$!" )& fg %1
cat
[1] + Stopped                    cat

要在循环中执行此操作,您可以执行以下操作:

(kill -TSTP 0); code=$?
python demo.py -some arguments & pid=$!  
while   (sleep 120;kill -TSTP "$pid")&
        fg %1; [ "$?" = "$code" ]
do :;   done

相关内容