我有一个perl脚本,可以将文件从一个传入目录排序到Ubuntu服务器上的其他目录中。 现在,我每隔几分钟就将它作为一个cron作业运行,但如果脚本在文件被写入传入目录时启动,则会出现问题。
更好的解决方案是在将文件写入传入目录或任何子目录时启动它。
我想我可以运行另一个脚本作为服务,只要发生目录更改就会调用我的排序脚本,但是我不知道如何去做。
答案 0 :(得分:2)
在Linux上,您可以使用pyinotify库:https://github.com/seb-m/pyinotify
要观看子目录,请在add_watch()调用中使用rec = True。完整的示例监控/ tmp目录及其文件创建子目录:
import pyinotify
class EventHandler(pyinotify.ProcessEvent):
def process_IN_CREATE(self, event):
# Processing of created file goes here.
print "Created:", event.pathname
wm = pyinotify.WatchManager()
notifier = pyinotify.Notifier(wm, EventHandler())
wm.add_watch('/tmp', pyinotify.IN_CREATE, rec=True)
notifier.loop()