我有一个perl脚本,可以将文件从一个传入目录排序到Ubuntu服务器上的其他目录。
现在,我每隔几分钟就将它作为cron作业运行,但是如果在将文件写入传入目录时启动脚本,则可能会出现问题。
更好的解决方案是在将文件写入传入目录或任何子目录时启动它。
我以为我可以将另一个脚本作为服务运行,每当发生目录更改时都将调用排序脚本,但是我不知道该怎么做。
最佳答案
在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()