在某个目录中创建文件时如何运行脚本?
答案1
你可以使用因克朗(通知cron)。
与 相同的想法cron
,只不过不是基于时间,而是定义一个incrontab
来指定在文件系统中的某些给定事件上运行什么命令。
在你的情况下incrontab
看起来像:
/tmp IN_CLOSE_WRITE /path/to/someCommand $#
someCommand
每当文件被写入并以文件名作为参数关闭时就会被调用(并且需要someCommand
检查是否传递了一个名为 的文件myFile
)。
不过有一个警告。/tmp
是世界可写的,因此任何人、任何东西都可以在那里写入文件,也可以在那里创建符号链接。因此,它可能会导致您在传输myFile
(使用符号链接)时覆盖您具有写访问权限的任何文件,或者可能导致您运行不同于您期望的命令(例如特洛伊木马)。将文件放在只有您有写访问权限的目录中会更有意义。
答案2
您可以将相同的脚本放入cron
:
while true; do
modification_time=`stat --printf=%y /tmp/mydir`
if [ "$modification_time" != "`stat --printf=%y /tmp/mydir`" ]; then
echo YOUR DIR CHANGED
fi;
done;
我测试了工作。你可以改变echo line
。