我需要每 X 秒运行一次应用程序,因此,就 cron 不能以这种方式处理秒数而言,我编写了一个带有无限循环的 bash 脚本,其中有 X 秒休眠。
当我必须手动停止正在运行的脚本时,我想以正确的方式来做——让应用程序完成功能,只是下次不要进入循环。
您知道如何实现吗? 我想过传递参数,但我找不到如何将参数传递给正在运行的脚本。
最佳答案
你可以捕获一个信号,比如 SIGUSR1:
echo "My pid is: $$"
finish=0
trap 'finish=1' SIGUSR1
while (( finish != 1 ))
do
stuff
sleep 42
done
然后,当您想在下一次迭代中退出循环时:
kill -SIGUSR1 pid
其中 pid
是脚本的进程 ID。如果在 sleep 过程中信号升高,它会醒来( sleep sleep 直到任何信号出现)。
关于bash - 如何优雅地停止 bash 脚本中的无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11203201/