HRM
HRM

Reputation: 2127

Continuously monitor a directory in linux and notify when a new file is available

I'm a starter in Linux and scripting environment. My requirement is like this:

  1. 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)

  2. A service or script or whatever should be there in Linux machine to track continuously whether the file is available.

  3. 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

Answers (2)

cnicutar
cnicutar

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

necromancer
necromancer

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

Related Questions