我有一个名为“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
则潜伏在阴影中。
等待cat
5 秒:
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