如何使用 bash 在文件更改时设置脚本 RELOAD/RESTART?

How do you setup script RELOAD/RESTART upon file changes using bash?

我有一个 Python Kafka worker 运行 通过 bash 脚本在 Docker 图像中 docker-compose 我需要的设置当我编辑代码时,只要目录中的文件发生更改,就会重新加载并重新启动。有谁知道如何为 bash 脚本完成此操作?

请不要将此 与有关 运行 在目录中的文件发生更改时启用脚本的几个答案合并。我已经看到了关于此的其他答案,但我找不到一种方法来 运行 一次脚本,然后 停止,重新加载并重新 运行如果有任何文件更改。

谢谢!

我的建议是让 docker 启动一个包装脚本,它只在后台启动真正的脚本。 然后无限循环:

  • 使用 inotifywait 包装器等待适当的更改
  • 然后kills/stop/reload/...子进程
  • 再次在后台启动一个新的。