加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何在目录内容变化时自动调用bash脚本

发布时间:2020-12-14 01:12:04 所属栏目:Linux 来源:网络整理
导读:我的目标是在任何新文件添加到特定目录或该特定目录的任何子目录时自动运行bash脚本. 细节场景: 我正在创建一个从教师向学生提交文件的自动化流程,反之亦然.发件人将上传文件,它将以格式ex中存储在LAMP服务器的Uploads目录中. “name_course-name_filename.
我的目标是在任何新文件添加到特定目录或该特定目录的任何子目录时自动运行bash脚本.

细节场景:

我正在创建一个从教师向学生提交文件的自动化流程,反之亦然.发件人将上传文件,它将以格式ex中存储在LAMP服务器的Uploads目录中. “name_course-name_filename.pdf”.我想要一些方法,以便当任何文件存储在Uploads文件夹中时,同时调用脚本并将该文件发送到receive列表.
从数据库中我可以找到该特定课程和学生的接收者列表.

我唯一关心的问题是,如果目录内容发生变化,如何自动调用脚本并使其在单个文件上工作. Cron将间隔但不是实时工作.

解决方法

Linux为此提供了一个很好的机制,称为 inotify.inotify主要作为C API提供.但是也开发了shell实用程序.你应该使用inotifytools中的 inotifywait(debian中的pkg名称).这是一个基本的例子:

#!/bin/bash

directory="/tmp"   # or whatever you are interested in

inotifywait -m -e create "$directory" |
while read folder eventlist eventfile
do
    echo "the following events happened in folder $folder:"
    echo "$eventlist $eventfile"
done

更新:

如果问题变得复杂,例如你必须监视递归的动态目录结构,你应该看看incron它是一个像守护进程一样的cron,它在某些事件上执行脚本.但事件是文件系统事件而不是计时器事件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读