连续监视linux中的目录,并在新文件可用时通知

时间:2013-09-09 05:47:02

标签: linux shell service

我是Linux和脚本环境的先驱。我的要求是这样的:

  1. 从asp.net应用程序中,将生成并复制文件    到Linux服务器计算机上的预定义文件夹。 (我假设这个    可以通过使用samba服务器进行远程文件共享来完成)

  2. Linux机器中的服务或脚本或其他任何内容    持续跟踪文件是否可用。

  3. 新文件可用后,只需解析文件,提取一些文件即可    输入变量并基于这些执行shell脚本    参数。

  4. 我的问题在于第2点。 - >如何编写应该连续执行的服务或脚本,并监视文件是否在特定文件夹中可用?

    我搜索了很多,进入了很多链接,我很困惑最简单的方法是做什么的。因为我不想在这里花费大量代码作为要进一步执行的脚本,而asp.net应用程序更重要,这应该是介于两者之间的连接器。

2 个答案:

答案 0 :(得分:20)

您正在寻找类似inotify的内容。

[cnicutar@ariel ~]$ inotifywait -m -e create ~/somedir/
Setting up watches.
Watches established.
/home/cnicutar/somedir/ CREATE somefile

例如,您可以循环执行:

inotifywait -m -e create ~/somedir/ | while read line
do
    echo $line
done

答案 1 :(得分:2)

inotify是您问题的完美解决方案。它可用作可在shell中使用的系统命令,也可用作可在C / C ++程序中使用的系统调用。有关详细信息,请参阅此问题的已接听答案:Inotify - how to use it? - linux

更新:您需要inotify-tools才能在命令行上使用。上述问题的答案仅描述了C / C ++系统调用。这是inotify-tools的链接。它也可作为打包发行版提供,因此请搜索您最喜欢的安装库(yum / apt-get / rpm等):https://github.com/rvoicilas/inotify-tools/wiki