Using a shell script, can I watch a folder and block program execution until a file in a certain folder changes?

you are viewing a single comment's thread
view the rest of the comments
[–] -2 points 1 year ago (12 children)

Can continuously loop over the file, examine the md5 hash for changes.

Run the script if it has changed.

https://stackoverflow.com/questions/6475252/bash-script-watch-folder-execute-command

daemon() {
chsum1=""

while [[ true ]]
do
    chsum2=`find src/ -type f -exec md5 {} \;`
    if [[ $chsum1 != $chsum2 ]] ; then           
        if [ -n "$chsum1" ]; then
            compile
        fi
        chsum1=$chsum2
    fi
    sleep 2
done
}
  • source
  • hideshow 12 child comments
  • [–] 1 point 1 year ago

    Even if you wanted to implement a solution like this, which you shouldn't, why on earth monitor the MD5 sum instead of just the mtime of the file???? Like, doing a checksum is the least efficient method of checking this possible.

    Like, you could do a simple while loop with a find myfile.txt +mmin 1; sleep 30 in it. Adjust numbers to your desired tolerance.

    Again, don't do that. But if you must, definitely don't do an md5sum for godssake.

  • source
  • parent
  • [–] [S] -1 points 1 year ago (8 children)

    I really like this, replace compile with whatever command you desire I guess.

  • source
  • parent
  • hideshow 8 child comments
  • [–] 9 points 1 year ago (7 children)

    This is a terrible solution. You will stress your IO for no reason.

  • source
  • parent
  • hideshow 7 child comments
  • [–] [S] 0 points 1 year ago* (6 children)

    On the upside, you do not need to install the inotifywait package. md5sum already installed on my system haha

  • source
  • parent
  • hideshow 6 child comments
  • [–] 2 points 1 year ago (3 children)