Sam*_*irl 8 bash shell infinite-loop
我需要在每X秒运行的应用程序,因此,尽可能的cron不秒,这样的工作,我写了一个bash脚本具有X秒睡在它无限循环.
当我必须手动停止运行脚本时,我想以正确的方式执行它 - 让应用程序完成运行,并且不要再次进入循环.
你有什么想法,如何实现这一目标?我想过传递参数,但我找不到如何将参数传递给运行脚本.
cda*_*rke 24
你可以捕获一个信号,比如SIGUSR1:
echo "My pid is: $$"
finish=0
trap 'finish=1' SIGUSR1
while (( finish != 1 ))
do
stuff
sleep 42
done
Run Code Online (Sandbox Code Playgroud)
然后,当您想在下一次迭代时退出循环:
kill -SIGUSR1 pid
Run Code Online (Sandbox Code Playgroud)
pid脚本的进程ID 在哪里.如果在睡眠期间信号升高,它将被唤醒(睡眠休眠直到出现任何信号).