Using a shell script, can I watch a folder and block program execution until a file in a certain folder changes?
- There is inotifywait which seems to do the job, The Wiki 
- After some suggestions to check out inotifywait I ended up with a solution that works for me as desired. - inotifywait --event modify,create ./targetfolder/; echo "new change, that I am interested in, occurred in targetfolder";- It turned out I was interested in both file modification and file creation events. 
- As another commenter said, you want inotifywait: 
- Maybe inotify or one of those “watcher” (not “watch”) tools available, but I don’t remember which one to use. 
- The simplest solution is entr, I use it a lot for development - https://www.linuxbash.sh/post/entr-rerun-commands-when-files-change 
- What is the end goal? - a hobby project: generate a rss feed based on recent file changes in a directory. But I thought this can also have many applications … - auto formatting code files on change
- automatic backups of a certain folder: run rsync on change in folder.
 - Are you familiar with CI/CD pipelines? You could use Git along with a service like Woodpecker CI or Gitlab Runners. 
 
 
- Block execution not entirely. You could chmod it as non-x and use inotifywatch to flip it back. - Edit: I misunderstood you, use inotifywait like the other person suggested. 
- 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 }- Oh god please don’t do this. Constantly reading the file is just stressing your IO for no reason. - Please inotify instead: 
- The fuck… 
- 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 30in it. Adjust numbers to your desired tolerance.- Again, don’t do that. But if you must, definitely don’t do an md5sum for godssake. 
- I really like this, replace compile with whatever command you desire I guess. - This is a terrible solution. You will stress your IO for no reason. - On the upside, you do not need to install the - inotifywaitpackage.- md5sumalready installed on my system haha- If you are a big fan of wasting disk performance, CPU cycles, and ultimately power. 
- It isn’t a terrible solution if you are checking infrequently just as ever 30 minutes. 
- why is that a plus - I do not need to install anything/can work on bare install without internet connection? - ah, fair. 
- You should be able to tie into the kernel with some C programming if you want to go extra small. 
 
 
 
 
 
 





