如何基于事件启动脚本?

时间:2012-01-04 17:26:46

标签: python bash redhat

我处于红帽环境中。 当文件在文件夹F中可用时,我需要将文件从服务器A移动到服务器B.

这对所使用的方法没有任何限制。是否可以在python或任何其他脚本中触发此事件?

它可以作为守护进程运行,但我不知道该怎么做。

有任何建议吗?

5 个答案:

答案 0 :(得分:2)

您想要创建一个守护程序,该守护程序将监视文件系统(文件夹F),然后运行一些脚本(将文件从A移动到B)。我知道two librarieswriteup

答案 1 :(得分:1)

如果您的文件夹F位于计算机A上,请使用inotify进行监视,然后将其复制。你不需要python。这是一个贝壳衬里为你做的。

if [ $(inotifywait -e create . --format %f) = "your_special_file" ]
then
# Run command to copy your special file
fi

你可以坚持使用while循环来永远运行守护进程风格。

inotifywait是inotify-tools套件的一部分,它可以在Debian中使用,也可能在RedHat中使用。

答案 2 :(得分:0)

您有两种选择:

  • 在您的脚本中,您可以拥有一个休眠几秒钟(甚至5分钟)的循环,然后检查该文件是否存在。这称为“忙等待”,但由于您让进程在检查之间休眠,计算机将不会注意到。

  • 您可以使用像inotify(Python module)这样的系统服务将脚本置于睡眠状态,除非文件更改/已创建。

后一种方法使用的资源较少,但要复杂得多。

答案 3 :(得分:0)

Linux的inotify系统旨在帮助完成这样的任务。一个适合您需求的工具,即使它有点旧,也是fsniper。你可以阅读它并从这里下载:
http://files.minuslab.net/doc.html

值得一提的是正确测试此工具,以及您可能想要尝试的其他方式,以便它不会复制不完整的文件。我在过去遇到过这方面的问题,例如当目的是从临时FTP服务器复制文件时,如果没有适当的检查,则经常发生文件被复制到其上传的中途。只是想提到它,因为它经常被忽视,而且它与腐败的文件混淆。 :P

答案 4 :(得分:-1)

这是cron的工作。 Cron man,man cron!