Search code examples
pythonbashunixfilesystemsreload

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


I have a Python Kafka worker run by a bash script in a Docker image inside a docker-compose setup that I need to reload and restart whenever a file in its directory changes, as I edit the code. Does anyone know how to accomplish this for a bash script?

Please don't merge this with the several answers about running a script whenever a file in a directory changes. I've seen other answers regarding this, but I can't find a way to run a script once, and then stop, reload and re-run it if any files change.

Thanks!


Solution

  • My suggestion is to let docker start a wrapper script that simply starts the real script in the background. Then in an infinite loop:

    • using inotifywait the wrapper waits for the appropriate change
    • then kills/stop/reload/... the child process
    • starts a new one in the background again.