Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何知道文件何时添加到目录?_Linux_Shell_Directory_Notifications - Fatal编程技术网

Linux 如何知道文件何时添加到目录?

Linux 如何知道文件何时添加到目录?,linux,shell,directory,notifications,Linux,Shell,Directory,Notifications,在我们的linux服务器中,我们有一个在后台运行的程序,它在某个目录中创建文件。当一个新文件被添加到目录中时,我想收到一封邮件 我试着使用Java,但那太复杂了。所以我在寻找更好的主意。是否有一些程序可以执行此操作或脚本?您需要。您可能还需要;-) 好吧,我会选择overkill(有这样的事情吗?),并建议从 更具体地说,该工具: 将其输出通过grep传输到Bash循环或其他地方。瞧 编辑: 这是一个快速且肮脏的单衬里: inotifywait -m /tmp 2>/dev/null |

在我们的linux服务器中,我们有一个在后台运行的程序,它在某个目录中创建文件。当一个新文件被添加到目录中时,我想收到一封邮件


我试着使用Java,但那太复杂了。所以我在寻找更好的主意。是否有一些程序可以执行此操作或脚本?

您需要。您可能还需要;-)

好吧,我会选择overkill(有这样的事情吗?),并建议从

更具体地说,该工具:

将其输出通过
grep
传输到Bash循环或其他地方。瞧

编辑:

这是一个快速且肮脏的单衬里:

inotifywait -m /tmp 2>/dev/null | grep --line-buffered '/tmp/ CREATE' | while read; do echo update | mail -s "/tmp updated" john@example.com; done
在本文中,我列出了三个Ruby库,它们可以让您观察目录的变化。使用这些库之一和邮件库(如)的脚本将非常简单

使用和编写脚本可能非常简单:

require 'directorywatcher'
require 'pony'

# Only watch every two minutes
my_watcher = Dir::DirectoryWatcher.new( 'uploads', 120 )
my_watcher.on_add = Proc.new do |file_name,info|
  Pony.mail(
    via:         :smtp,
    via_options: { address: 'smtp.mydomain.com', domain:'mydomain.com' },
    from:        "Upload Notifier <noreply@mydomain.com>",
    to:          "admin@mydomain.com",
    subject:     "New File Uploaded!",
    body:        "A new file '#{file_name}' was just uploaded on #{info[:date]}"
  )
end
my_watcher.start_watching.join # Join the thread
需要“directorywatcher”
需要“小马”
#每两分钟看一次
my_watcher=Dir::DirectoryWatcher.new('uploads',120)
my_watcher.on_add=Proc.new do | file_name,info|
小马邮件(
via::smtp,
通过以下选项:{地址:'smtp.mydomain.com',域:'mydomain.com'},
来自:“上传通知程序”,
至:admin@mydomain.com",
主题:“上传新文件!”,
正文:“一个新文件“#{file_name}”刚刚上传到#{info[:date]}”
)
结束
我的观察者。开始观察。加入。加入线程

太棒了!我试试看。隐马尔可夫模型。。。我还不能投票,否则我会:)+1谢谢!可以让它在后台运行吗?或者我应该通过cron使用它吗?@EdNiell您可以让它运行(通过我刚才添加的修改);我没有测试过我的库或我在任何任务关键型应用程序中列出的其他库,因此您可能需要关注它一段时间。然而,我确实有一些Ruby脚本以相同的模式运行(生成一个线程并加入它),这些脚本在生产环境中一次运行几个月都没有问题。
require 'directorywatcher'
require 'pony'

# Only watch every two minutes
my_watcher = Dir::DirectoryWatcher.new( 'uploads', 120 )
my_watcher.on_add = Proc.new do |file_name,info|
  Pony.mail(
    via:         :smtp,
    via_options: { address: 'smtp.mydomain.com', domain:'mydomain.com' },
    from:        "Upload Notifier <noreply@mydomain.com>",
    to:          "admin@mydomain.com",
    subject:     "New File Uploaded!",
    body:        "A new file '#{file_name}' was just uploaded on #{info[:date]}"
  )
end
my_watcher.start_watching.join # Join the thread