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
}
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.
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.
It turned out I was interested in both file modification and file creation events.
As another commenter said, you want inotifywait:
https://linux.die.net/man/1/inotifywait
Maybe inotify or one of those "watcher" (not "watch") tools available, but I don't remember which one to use.
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 …
Are you familiar with CI/CD pipelines? You could use Git along with a service like Woodpecker CI or Gitlab Runners.
The simplest solution is entr, I use it a lot for development - https://www.linuxbash.sh/post/entr-rerun-commands-when-files-change
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
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
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 hahaIf 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.