Reputation: 2127
I'm a starter in Linux and scripting environment. My requirement is like this:
From an asp.net application, a file will be generated and copied to a predefined folder on a Linux server machine. (I'm assuming this can be done by remote file sharing using samba server)
A service or script or whatever should be there in Linux machine to track continuously whether the file is available.
Once a new file is available, just parse the file, extract some input variables and execute a shell script based on these parameters.
My question lies in point no:2. --> How can I write a service or script which should execute continuously and monitor whether a file is available in a particular folder?
I've searched a lot, got into a lot of links and I'm confused what is the easiest method to do this. Because I don't want to spend a lot of coding here as the script to be executed further and the asp.net app is more important and this should be a connector in between.
Upvotes: 12
Views: 31375
Reputation: 182619
You are looking for something like inotify
.
[cnicutar@ariel ~]$ inotifywait -m -e create ~/somedir/
Setting up watches.
Watches established.
/home/cnicutar/somedir/ CREATE somefile
For example, you could do it in a loop:
inotifywait -m -e create ~/somedir/ | while read line
do
echo $line
done
Upvotes: 22
Reputation: 24641
inotify
is the perfect solution to your problem. It is available as a system command that can be used in a shell, or as a system call that can be used in a C/C++ program. For details see the accepted answer to this question: Inotify - how to use it? - linux
Update: you need inotify-tools
for use on command line. The answer to the question above only describes C/C++ system calls. Here is the link to inotify-tools. It is also available as a packaged distribution so search your favorite install repository (yum
/apt-get
/rpm
etc.): https://github.com/rvoicilas/inotify-tools/wiki
Upvotes: 3