我不知道这是否已经被问过,但如果我有一个运行一个无限循环的脚本:如何使bash脚本在有限的时间内运行,但不能立即终止进程?
#!/bin/bash
while :
do
echo "Press [CTRL+C] to stop.."
sleep 1
done
,我要运行它只有10秒,但我不希望它马上停止,例如,在psudo代码,我想是这样的:
while true:
if 10 seconds elapsed:
do something
then kill
else
keep going #this takes an arbitrary amount of time
我试过gtimeout,和它的一定时间后杀死进程,但我的问题是,内循环不知道已经过了多少时间。有什么我可以添加到脚本本身来实现这一目标吗?
谢谢!
所以你想要一个看门狗的功能,如果它发出10秒没有信号表示没有问题,就会终止脚本? –
不,我只是想要循环,它会执行一些命令,重复运行一段时间,然后在时间耗尽之前执行其他操作。所以我想让内部循环知道时间。希望这是有道理的。 – Lana
我不知道你的意思,但你可以使用'$ SECONDS'变量吗?它从shell启动时开始计数,可以在任何时候重置为0。 –