24
submitted 5 months ago* (last edited 5 months ago) by helloworld@lemmy.ml to c/linuxquestions@lemmy.zip

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
[-] running_ragged@lemmy.world -2 points 5 months ago

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
}
[-] hperrin@lemmy.ca 15 points 5 months ago

Oh god please don’t do this. Constantly reading the file is just stressing your IO for no reason.

Please inotify instead:

https://linux.die.net/man/1/inotifywait

[-] chonkyninja@lemmy.world 4 points 5 months ago
[-] testfactor@lemmy.world 2 points 5 months 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.

[-] helloworld@lemmy.ml -1 points 5 months ago

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

[-] hperrin@lemmy.ca 10 points 5 months ago

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

[-] helloworld@lemmy.ml 0 points 5 months ago* (last edited 5 months ago)

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

[-] hperrin@lemmy.ca 11 points 5 months ago

If you are a big fan of wasting disk performance, CPU cycles, and ultimately power.

[-] nublug@lemmy.blahaj.zone 2 points 5 months ago
[-] helloworld@lemmy.ml 1 points 5 months ago

I do not need to install anything/can work on bare install without internet connection?

[-] nublug@lemmy.blahaj.zone 1 points 5 months ago
[-] possiblylinux127@lemmy.zip 1 points 5 months ago* (last edited 5 months ago)

You should be able to tie into the kernel with some C programming if you want to go extra small.

[-] possiblylinux127@lemmy.zip 2 points 5 months ago

It isn't a terrible solution if you are checking infrequently just as ever 30 minutes.

this post was submitted on 25 Aug 2025
24 points (100.0% liked)

Linux Questions

3653 readers
5 users here now

Linux questions Rules (in addition of the Lemmy.zip rules)

Tips for giving and receiving help

Any rule violations will result in disciplinary actions

founded 2 years ago
MODERATORS