我做了一个简单的脚本,每分钟执行一条命令:
#!/usr/bin/env sh
while true; do
exec "$@"
sleep 60
done
我的想法是让它成为一个Docker 入口点,让我可以运行 Laravel 调度程序。但在构建图像之前,我想对其进行测试:
$ ./entrypoint/entrypoint_cron.sh echo "Hello"
Hello
但该命令只执行一次。为什么?以及如何使参数中提供的命令在连续循环中运行,直到我用Ctrl+终止它C?
该
exec
命令用新进程替换当前进程。成功执行意味着没有任何东西可以继续执行脚本。POSIX(的文档
sh
,另见)是这样man sh
写的,也许你的意思是这个?